Traefik 迁移文档 - 跨版本迁移步骤
迁移:版本之间的必要步骤
本指南提供了在不同 Traefik v3 版本之间升级的详细迁移步骤。每个部分都涵盖了平稳过渡所需的不兼容变更、已弃用项和配置更新。
v3.7.3
Kubernetes Gateway API Provider
从 v3.7.3 开始,Kubernetes Gateway API Provider 使用的 Kubernetes 客户端的 QPS 和 Burst 值分别增加到 50 和 100(即 Kubernetes 客户端默认值的 10 倍)。
Kubernetes Gateway API Provider 会大量写入状态以遵守 Kubernetes Gateway API 规范。此变更可避免与 Kubernetes API 速率限制相关的性能问题,这可能在构建新路由配置时增加设置时间。
这些值可以通过 kubernetesGateway.qps 和 kubernetesGateway.burst Provider 选项进行配置。
BasicAuth 中间件
从 v3.7.3 版本开始,BasicAuth 中间件需要非空的用户配置才能成功构建。 以前,该中间件可以成功构建,但总是对任何请求返回 401 状态码。 现在,如果发生错误,任何使用它的路由器都将被卸载。对于相同的请求,将返回 404 状态码,而不是 401 状态码。
StripPrefix 和 StripPrefixRegex 中间件
从 v3.7.3 版本开始,StripPrefix 中间件和 StripPrefixRegex 中间件在剥离配置的前缀生成的路径与其规范化形式不同时(即包含 . 或 .. 段的路径,这些段会被规范化折叠)会拒绝请求(400 Bad Request)。
这可以防止被剥离的路径被上游服务解释为不同的资源。
完整迁移指南
请访问 Traefik 官方迁移文档 获取每个 v3.x 版本的详细变更。
主要 v3 版本
- v3.0.0:v3 的初始版本,从 v2 升级需要大量变更
- v3.1.0:引入了 TraefikService
- v3.2.0:增加了对 OTel 指标的支持
- v3.3.0:增加了对 Gateway API v1.1 的支持
- v3.4.0:增加了对 OIDC 多个配置的支持
- v3.5.0:改进了健康检查
- v3.6.0:增加了对 Kubernetes 1.32 的支持
- v3.7.0:增加了对 Gateway API v1.5 的支持
迁移路径概览
从 v2.x 迁移到 v3.x
主要变更:
Kubernetes Provider 重命名:
kubernetes→kubernetesingresskubernetescrd→kubernetescrd(保持)
API 路径变更:仪表盘路径变更
中间件选项:某些中间件选项重命名
配置文件格式:不再支持某些旧格式
从 v1.x 迁移到 v3.x
v1 配置完全不兼容 v3。必须完全重写配置。
主要变更:
- 路由规则语法完全不同
- 没有 Frontends/Backends 概念,改为 Routers/Services
- TLS 配置从路由级别改为 TLSOptions
从其他 Ingress Controller 迁移
- 从 NGINX Ingress Controller 迁移:Traefik 支持 NGINX annotations,可平滑迁移
- 从 HAProxy 迁移:使用文件 Provider 重写配置
- 从其他 API Gateway 迁移:使用文件 Provider 重写配置
迁移最佳实践
- 阅读 CHANGELOG:升级前仔细阅读 CHANGELOG
- 测试环境验证:先在测试环境升级
- 分步升级:避免跨多个主版本升级
- 备份配置:升级前备份所有配置
- 监控关键指标:升级后密切监控关键指标
- 回滚计划:准备回滚计划
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。