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: webDocker 运行:
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" # 自动 HTTPSKubernetes 示例(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.0TCP 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 逻辑。
- 下载 WASM 插件(如 TCP proxy),配置
-
监控与 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。
- Metrics:
风险控制:大规模 (>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/。