Traefik 是一款现代化的反向代理与负载均衡器,具备在 Kubernetes、Docker 及其他编排器中自动发现服务的能力。它被定位为 Nginx 的替代方案,特点是声明式配置与自动证书管理。
用途 可用作基于 Nginx 的 api_gateway_agent 的替代方案,前提是希望获得 Kubernetes 原生的服务自动发现能力。在服务需要动态扩缩容的环境中尤为有用。
主要能力
- 在 Kubernetes、Docker 及其他编排器中自动发现服务。
- 声明式配置。
- 自动签发证书(Let's Encrypt)。
- 支持 IngressRoute 路由定义。
- 支持限流(rate limiting)与熔断(circuit breaker)中间件。
- 支持对后端进行主动健康检查。
- 支持暴露 Prometheus 指标。
- 提供 dashboard。
使用方式
- 在 Kubernetes 中部署:helm install traefik traefik/traefik。
- 为编排器配置 IngressRoute,示例:
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
spec:
routes:
- match: Host(
api.verifid.com) && PathPrefix(/v1) services:- name: orchestrator port: 8000
- match: Host(
- 启用 Let's Encrypt:配置带 ACME 的 certificatesResolvers。
- 配置限流与熔断中间件。
- 在开发环境启用 dashboard:--api.dashboard=true。
- 配置指向后端的主动健康检查。
- 暴露 Prometheus 指标:--metrics.prometheus=true。
适用场景 适合偏好 Kubernetes 原生自动发现、且服务会动态扩缩容的环境。
限制 Traefik 相比 Nginx 开销更高(吞吐量约低 10-15%),但开发体验更好。自动发现免去了扩缩容时手动重新配置的需要。在高流量生产环境(超过 10K RPS)下,配合 Lua 的 Nginx 仍是更高效的选择。