主要特点
兼容性:Traefik兼容所有主流的集群技术,如Kubernetes、Docker、Docker Swarm、AWS、Mesos、Marathon等,甚至可以用于在裸机上运行的较旧的软件。
自动配置:使用Traefik时,不需要维护或同步一个独立的配置文件,因为一切都会自动配置并实时操作(无需重新启动,不会中断连接)。
动态服务发现:传统的反向代理需要一个包含路由到服务的所有可能路由的配置文件,而Traefik会实时检测服务并自动更新路由规则。
支持动态加载配置文件和优雅重启。
自动配置ACME(Let's Encrypt)证书功能。
支持熔断、重试。
内置Web UI,管理相对方便。
支持WebSocket、HTTP/2、gRPC。
支持metrics(如Rest、Prometheus、Datalog、Statsd、InfluxDB)
常用组件
Providers:用于自动发现平台上的服务,可以是编排工具、容器引擎或key-value存储等。
Entrypoints:监听传入的流量(如端口等),是网络入口点,定义了接收请求的端口(HTTP或TCP)。
Routers:分析请求(如host、path、headers、SSL等),负责将传入请求连接到可以处理这些请求的服务上。
Services:将请求转发给应用(如负载均衡等),负责配置如何获取最终将处理传入请求的实际服务。
Middlewares:中间件,用于修改请求或根据请求做出一些判断(如身份验证、速率限制、headers等)。中间件被附加到路由上,是一种在请求发送到服务之前(或在服务的响应发送到客户端之前)调整请求的方法。
官方文档 https://doc.traefik.io/traefik/getting-started/quick-start/
Docker镜像 https://hub.docker.com/_/traefik
GitHub地址 https://github.com/traefik/traefik?tab=readme-ov-file
安装教程
Traefik支持K8S和Docker部署,Docker部署操作步骤:安装Docker、编写docker-compose.yml、启动容器、设置反向代理。
| 安装docker
sudo apt update
sudo apt install -y docker.io docker-compose
| 编写docker-compose.yml
version: '3'
services:
reverse-proxy:
image: traefik:v3.1
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
| 启动容器
sudo docker-compose up -d reverse-proxy
启动成功之后,访问 http://IP:8080 来确定是否部署成功,上述示例是自动监听了宿主机的80端口,如需监听多个端口按上述配置编写即可。
| 设置反向代理
通过配置其他docker服务的labels属性设置反向代理,在上述的docker-compose.yml文件末尾添加新的Docker服务。
version: '3'
services:
...
whoami:
# A container that exposes an API to show its IP address
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
启动容器whoami
sudo docker-compose up -d whoami
浏览器访问http://IP:8080/api/rawdata发现Traefik已经自动检测到了新的容器,并且更新了自己的配置。
更多关于Traefik的使用,请参考官方文档。
更多内容也可看笔者出版图书!