Skip to content

Traefik 迁移文档 - 跨版本迁移步骤

迁移:版本之间的必要步骤

本指南提供了在不同 Traefik v3 版本之间升级的详细迁移步骤。每个部分都涵盖了平稳过渡所需的不兼容变更、已弃用项和配置更新。

v3.7.3

Kubernetes Gateway API Provider

v3.7.3 开始,Kubernetes Gateway API Provider 使用的 Kubernetes 客户端的 QPS 和 Burst 值分别增加到 50100(即 Kubernetes 客户端默认值的 10 倍)。

Kubernetes Gateway API Provider 会大量写入状态以遵守 Kubernetes Gateway API 规范。此变更可避免与 Kubernetes API 速率限制相关的性能问题,这可能在构建新路由配置时增加设置时间。

这些值可以通过 kubernetesGateway.qpskubernetesGateway.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

主要变更:

  1. Kubernetes Provider 重命名

    • kuberneteskubernetesingress
    • kubernetescrdkubernetescrd (保持)
  2. API 路径变更:仪表盘路径变更

  3. 中间件选项:某些中间件选项重命名

  4. 配置文件格式:不再支持某些旧格式

从 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 重写配置

迁移最佳实践

  1. 阅读 CHANGELOG:升级前仔细阅读 CHANGELOG
  2. 测试环境验证:先在测试环境升级
  3. 分步升级:避免跨多个主版本升级
  4. 备份配置:升级前备份所有配置
  5. 监控关键指标:升级后密切监控关键指标
  6. 回滚计划:准备回滚计划

在生产环境使用 Traefik OSS?

如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。

基于 MIT 协议发布