Traefik 目前累積 65,293 顆星標與 6,264 次複製,採 MIT 授權,主要語言為 Go。專案在 3.7 系列加入 Kubernetes Ingress NGINX 提供者,讓既有以 nginx.ingress.kubernetes.io 註解描述的 Ingress 資源,在不修改 YAML 的前提下被 Traefik 接管。這項能力出現的時間點並非偶然:Kubernetes Ingress NGINX 控制器已於 2026 年 3 月結束維護,不再發布新版本、安全補丁與錯誤修正。
對已經把流量入口交給 Ingress NGINX 的團隊而言,問題從來不是「哪個代理比較快」,而是「哪條路徑能讓既有設定繼續運作」。Traefik 的答案是把相容層做進提供者本身,讓註解翻譯成為控制器行為的一部分,而非外掛或轉換腳本。

Traefik 是什麼?
Traefik 是 2015 年開源的 HTTP 反向代理與負載平衡器,以 Go 撰寫、採 MIT 授權,透過監聽 Docker 與 Kubernetes 自動產生路由。
專案的設計起點是「路由不應該手動維護」。傳統反向代理要求管理員逐條設定路徑與子網域的對應關係,而當服務每天被新增、移除、擴容數十次,這份設定很快就會偏離現實。Traefik 改為監聽協調器或服務登錄中心的 API,在服務變動時即時生成路由,設定檔因此不再是維運負擔。
這個定位在 2015 年 9 月首度提交程式碼時並不算主流,當時 Kubernetes 尚未成為預設選項。十一年後,同一套抽象反而成為跨平台優勢:同一個二進位檔可以同時服務 Docker Compose 的小型部署與多叢集的 Kubernetes 環境,設定模型一致,只是提供者不同。
專案由 Traefik Labs 主導商業化,開源版本維持 MIT 授權,企業功能則放在 Traefik Hub 產品線,包含 API 閘道、AI 閘道與 MCP 閘道。這種雙軌結構讓核心代理保持寬鬆授權,同時把治理、稽核與集中憑證管理等需求留給付費層。
為什麼 NGINX Ingress 退場會牽動大批 Kubernetes 團隊?
Ingress NGINX 控制器已於 2026 年 3 月停止更新與安全修補,既有 Ingress 資源因此需要替代控制器接手。
Ingress 是 Kubernetes 中最普遍也最容易被低估的資源類型。它用少量 YAML 描述主機、路徑與後端服務,真正執行轉發的則是控制器。由於 Ingress 資源本身只標準化少數欄位,各家控制器長期以註解擴充功能,nginx.ingress.kubernetes.io/* 因此成為事實標準,承載重寫規則、逾時設定、CORS、限流、認證與 canary 發佈等行為。
控制器停止維護意味著兩件事同時發生。其一是安全補丁不再出現,任何後續揭露的漏洞都只能靠外部手段緩解;其二是註解語意失去權威定義,行為一旦偏離既有文件,團隊難以判斷是設定錯誤還是版本缺陷。
這使得遷移的評估重點從功能對比轉向翻譯準確度。團隊真正想知道的,是自己那幾十條註解在新的控制器下會不會得到相同結果,而不是新控制器是否支援更多功能。
Traefik 如何做到不改 Ingress 就完成遷移?
提供者會辨識 IngressClass,把 nginx.ingress.kubernetes.io 註解翻譯成 Traefik 路由與中介軟體,既有 YAML 不需修改。
啟用方式是在靜態設定中開啟 kubernetesIngressNGINX 提供者,並以 watchNamespace 或 watchNamespaceSelector 限定監看範圍。提供者預設挑選 spec.controller 為 k8s.io/ingress-nginx 的 IngressClass,並接管所有引用該類別的 Ingress;若設定 ingressClassByName: true,則額外納入名稱相符的 IngressClass,形成第二條納入路徑。
官方文件同時提醒一個容易踩到的細節:此提供者預設會發現叢集內所有 Ingress,若同時啟用標準的 Kubernetes Ingress 提供者,可能產生重複路由。建議做法是用 IngressClass 明確劃分職責,或以命名空間限制監看範圍。
翻譯的產物不是一層黑箱轉接,而是 Traefik 原生的動態設定:註解被轉成 router、service 與 middleware 物件。這代表後續可以用 Traefik 既有的中介軟體鏈、指標與存取日誌觀察這些路由,也可以在必要時以 Traefik 原生資源覆寫個別行為。
3.7 系列補上了哪些 NGINX 註解?
3.7 系列支援 rewrite-target、canary、limit-rps 與 auth-tls 等註解,涵蓋多數常見的入口層設定。
2026 年 5 月 5 日發布的 3.7.0 是這條路線的分水嶺。該版本以 metamodel 重新生成 ingress-nginx 的動態設定,並一次補上大量註解支援,包括 rewrite-target、app-root、auth-signin、proxy-connect-timeout、proxy-read-timeout、proxy-send-timeout、session-cookie-expires、upstream-hash-by、proxy-http-version、x-forwarded-prefix、limit-connections、limit-burst-multiplier、limit-rpm、limit-rps、canary、custom-headers、whitelist-source-range、allowlist-source-range、server-alias、upstream-vhost、custom-http-errors、permanent-redirect、temporal-redirect 與 auth-tls-* 系列。
其中 server-snippet 與 configuration-snippet 的支援最具爭議性,因為這兩項註解原本允許直接注入 NGINX 指令片段。Traefik 的做法是把可辨識的片段轉譯成對應設定,而非執行任意 NGINX 語法;官方在後續版本持續修正 rewrite 指令的引號處理與空路徑行為,也說明了這層轉譯的邊界所在。
值得注意的是「支援」與「完全等價」之間的差距。canary 的權重分配、auth-tls 的用戶端憑證驗證、custom-http-errors 的錯誤頁對應,都涉及控制器內部的細節實作,遷移前仍應以實際流量驗證,而非只看文件清單。

最近的修補節奏透露什麼維護訊號?
2026 年 10 月連續三個版本集中修補 ingress-nginx 行為與認證細節,顯示相容層仍在高頻校正。
10 月 5 日的 3.7.14 是一次大規模校正,光是 ingress-nginx 相關修正就超過二十項,涵蓋 TLS 行為、rewrite-target 對完整 URL 的處理、configuration-snippet 的引號修剪、custom-headers 在 503 情境的表現、跨命名空間的 TLS 選項衝突,以及 sticky cookie 的網域與到期時間。同版本另外修正了 P2C 負載平衡器的第二台伺服器選擇偏差,並將 NTLM 與 Kerberos 的後端連線隔離。
10 月 15 日的 3.7.15 轉向入口層的安全收緊:不論 HTTP 版本,一律在進入多工器之前拒絕 CONNECT 方法。這類變更通常不會出現在功能說明中,卻直接影響代理對異常請求的處理邊界。
10 月 20 日的 3.7.16 則補上 ForwardAuth 與 ingress-nginx auth-url 對 NTLM 與 Kerberos 的支援,同一天也發布 2.11.60 維護版。三個版本在兩週內連續推出,且 2.11 分支仍同步維護,說明專案對舊版使用者的承諾並未隨主線推進而中止。

專案數據呈現怎樣的維護規模?
儲存庫累積 65,293 顆星標、6,264 次複製、約 1,140 位貢獻者與 6,667 次提交,採 MIT 授權,主要語言為 Go。
專案自 2015 年 9 月建立以來累積 587 個版本標籤,目前同時維護 3.7 與 2.11 兩條分支。未結議題與待合併請求合計約 951 項,對一個每日多次提交的基礎設施專案而言屬於正常水位,也反映出入口層的變更請求本來就難以批次消化。
貢獻者結構值得注意。提交紀錄顯示長期維護者仍承擔大量工作,rtribotte 在近三個月內提交 44 次、變更超過 18 萬行,mmatur 提交 17 次。這種以核心團隊為主、社群貢獻為輔的模式,在安全敏感的路由與認證模組上是常見取捨:審查成本高於撰寫成本。
與其他 Ingress 方案相比,Traefik 的定位如何?
Traefik 以自動服務發現與單一二進位為核心優勢,並以免改寫 Ingress 的相容層切入 NGINX 退場缺口;企業級治理功能則留給商業版的 API 與 MCP 閘道。
市面上的替代路線大致分為三類。第一類是雲端廠商託管的負載平衡器,遷移成本低但綁定特定平台;第二類是新興的 Gateway API 實作,方向正確但需要重寫路由資源;第三類是以相容層承接既有 Ingress 的控制器,Traefik 屬於此類,並同時提供 Gateway API 與 CRD 兩條原生路線。
這種「三線並行」的策略有其現實考量。Ingress 資源短期內不會消失,Gateway API 仍在推進,團隊不可能一次改完。讓同一套代理同時支援三種描述方式,等於把遷移切成可分批執行的步驟,而不是一次性切換。
商業層的布局也沿著同一條線延伸。Traefik Hub 提供的 AI 閘道與 MCP 閘道,把模型端點與 MCP 伺服器納入既有的路由、憑證與稽核體系。對已在使用 Traefik 的團隊而言,這是把新增的 AI 流量接進既有入口的方式,而非另建一套治理平面。
如何快速開始試用 Traefik?
官方提供五分鐘快速入門與單一 Docker 指令,可用範例設定檔啟動代理並開啟 8080 儀表板;既有 NGINX Ingress 環境則建議先在測試叢集啟用相容提供者。
文件中的最小啟動方式如下:
docker run -d -p 8080:8080 -p 80:80 \
-v $PWD/traefik.toml:/etc/traefik/traefik.toml \
traefik
要驗證遷移,建議在非生產叢集先套用 Ingress NGINX 提供者的 RBAC,再以 watchNamespace 限定單一命名空間,觀察路由與中介軟體是否如預期生成。官方提供的 kubernetes-ingress-nginx-rbac.yml 已包含命名空間選擇器所需的權限。
評估時應優先驗證四類高風險設定:rewrite-target 與 configuration-snippet 的路徑改寫結果、auth-tls-* 的雙向 TLS 行為、canary 的流量比例,以及限流註解的實際閾值。這四者最容易因實作差異而出現看似成功、實際偏差的情況。
出處連結有哪些?
專案原始碼、版本紀錄與遷移文件均可於 GitHub 與官方文件站取得,涵蓋 Ingress NGINX 提供者設定與 NGINX 遷移指南。
儲存庫位於 https://github.com/traefik/traefik,版本紀錄見 CHANGELOG.md,Ingress NGINX 提供者與遷移指南收錄於官方文件站的參考章節。Kubernetes 社群關於 Ingress NGINX 控制器退場的公告,則發布於 Kubernetes 官方部落格。
總結:Traefik 適合什麼團隊?
適合已採用 Kubernetes、需要在不重寫 Ingress 的前提下更換入口控制器的團隊;若高度依賴 NGINX 專屬 snippet 注入,仍應先做逐項驗證再切換。
Traefik 的價值不在功能清單的長度,而在於把遷移成本壓到可分批執行的程度。當一個長期被視為預設選項的控制器宣布退場,能提供「既有設定照樣運作」的路徑,本身就是最實際的競爭力。
同時必須看清限制。相容層翻譯的是註解語意,不是 NGINX 的執行模型;server-snippet 這類允許注入原生指令的設定,在轉譯架構下必然存在邊界。10 月連續三個版本的修補節奏,正好說明這層對應關係仍在持續校正之中。