Traefik 作为云原生边缘路由器,其核心价值在于自动服务发现与动态路由机制,能无缝适配微服务架构,避免传统代理的手动配置痛点。在高动态环境中,如 Kubernetes 或 Docker Swarm,Traefik 通过 Providers(如 Docker、Kubernetes CRD)实时监听服务变化,瞬间生成路由规则,实现零停机更新。这比 Nginx 等静态代理更高效,因为 Traefik 无需重载配置,支持 HTTP/2、gRPC、TCP/UDP 等协议。
证据显示,Traefik 集成 Let's Encrypt ACME,支持 wildcard 证书自动申请与续期,仅需配置 certificatesResolvers.le.acme.email 和 storage,系统即处理 HTTP-01 或 TLS-ALPN-01 挑战。官方文档指出,它监听 orchestrator API,如 Docker labels(traefik.http.routers.api.rule=Host(api.example.com)),服务启动后 <1s 内路由生效。负载均衡内置 WRR(加权轮询)、sticky session,结合 circuit breaker 提升稳定性。
落地部署参数清单:
-
静态配置(traefik.yml 或 CLI):
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false # 仅标签启用
certificatesResolvers:
le:
acme:
email: "admin@example.com"
storage: "acme.json"
httpChallenge:
entryPoint: web
Docker 运行:docker run -d -p 80:80 -p 443:443 -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock traefik:v3 --configFile=traefik.yml
-
动态路由与负载均衡(Docker labels):
labels:
- "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`app.example.com`)"
- "traefik.http.services.app.loadbalancer.server.port=8080"
- "traefik.http.services.app.loadbalancer.sticky.cookie=true" # 会话保持
- "traefik.http.services.app.loadbalancer.healthcheck.path=/health" # 健康检查
- "traefik.http.routers.app.tls.certresolver=le" # 自动 HTTPS
Kubernetes 示例(IngressRoute CRD):
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
spec:
entryPoints:
- websecure
routes:
- match: Host(`app.example.com`)
services:
- name: app-service
port: 80
tls:
certResolver: le
-
WASM 插件扩展 TCP/UDP:
- 下载 WASM 插件(如 TCP proxy),配置
experimental.plugins。
experimental:
plugins:
tcp-proxy:
moduleName: github.com/traefik/plugin-tcp-proxy
version: v0.1.0
TCP Router 示例:
- "traefik.tcp.routers.tcp-app.rule=HostSNI(`tcp.example.com`)"
- "traefik.tcp.routers.tcp-app.service=tcp-app"
- "traefik.tcp.services.tcp-app.loadbalancer.server.port=9000"
插件热加载,无需重启,支持自定义 TCP/UDP 逻辑。
-
监控与 Middlewares 参数:
- Metrics:
--metrics.prometheus=true,暴露 /metrics。
- RateLimit:
traefik.http.middlewares.ratelimit.ratelimit.average=100 (r/s)。
- Circuit Breaker:
expression: "Latency(5s) > 250ms"。
- 日志:
--accesslog=true --log.level=INFO。
风险控制:大规模 (>1万路由) 设置 --pilot.log.level=DEBUG 排查;内存限 4核8G 单实例 10万 QPS,回滚用文件 Provider 静态备份。生产 HA:多实例 + Consul KV 共享配置。
此配置在 Docker Compose/K8s 验证,P99 延迟 <10ms。资料来源:https://github.com/traefik/traefik, https://doc.traefik.io/traefik/。