升级前 Traefik 版本是 v2.10.7(2023年末),最新稳定版已到 v3.7.5(2026年6月)。中间跨越了约 2.5 年。

v3 比 v2 强在哪(对当前环境有用的) 链接到标题

特性 作用 对当前环境
HTTP/3 (QUIC) 基于 UDP 的传输协议,显著降低连接延迟 ✅ 公网用户访问加速
Brotli 压缩 比 gzip 更高的压缩率(约 20%) ✅ 静态资源传输更小
Dashboard 改进 证书视图、详情页优化、路由拓扑可视化 ✅ 日常查看更方便
OpenTelemetry 集成 链路追踪、指标、日志一体化 ❌ 已有 Prometheus+Loki
SPIFFE mTLS 后端服务身份认证 ❌ 暂不需要
WebAssembly 插件 自定义中间件扩展 ❌ 暂不需要
中间件可挂载到 Service 不再局限于 router 级别 ❌ 暂不需要
按状态码重试/切换后端 Retry/Failover 支持 HTTP 状态码 ❌ 暂用不上

最关键的一点:2.5 年的安全更新和 Bugfix,这是升级的最直接动力。

升级过程 链接到标题

整个升级分为两步走:

第一步:升到 v3,保持 v2 语法兼容 链接到标题

只改了两处 docker-compose.yaml

# 1. 镜像标签
image: "traefik:v2.10.7"  →  image: "traefik:v3.7.5"

# 2. 新增兼容标志(避免路由语法不兼容导致启动失败)
command:
  - "--core.defaultrulesyntax=v2"

然后拉镜像重启:

docker compose pull && docker compose up -d

验证三个路由服务全部正常后,进入第二步。

第二步:迁移到 v3 原生语法 链接到标题

查看日志发现一个 deprecation:

WRN Middleware "ipwhitelist@file" of type IPWhiteList is deprecated,
please use IPAllowList instead.

ipwhitelist 在 v3 中重命名为 ipAllowList,字段名也同步更新。

改两个文件:

# config/white-list.yaml
- ipwhitelist:       →  ipallowlist:
  ipWhiteList:       →  ipAllowList:

# config/traefik.yaml(路由引用)
- ipwhitelist        →  ipallowlist

顺便移除兼容标志:

# docker-compose.yaml 删掉这行
- "--core.defaultrulesyntax=v2"

再次重启,日志干净无警告。

注意事项 链接到标题

  • --core.defaultrulesyntax=v2 必须首次就加:不加的话 v2 路由语法不兼容,Traefik 会拒绝启动
  • CLI 参数兼容性好--serversTransport.insecureSkipVerify 等常用参数在 v3 中原样可用,无需调整
  • ACME 证书缓存保留:升级后 Let’s Encrypt 证书直接复用,无需重新签发
  • File provider YAML 完全兼容:v2 语法的路由配置在 v3 中照常工作,可逐步迁移
  • 日志 deprecation 逐个修复:升级后留意日志中的 WRN 等级消息,逐项处理即可

总结 链接到标题

从 v2.10.7 到 v3.7.5 的升级很平滑。官方提供的 v2 语法向后兼容机制让迁移风险几乎为零,只需要改镜像标签 + 加一个兼容标志就能跑起来,后续再逐步清理 deprecation 即可。