謹慎
Kubernetes SIG 網路與安全回應委員會宣布 Ingress NGINX 專案即將退休,維護將於 2026 年 3 月結束。 目前使用 NGINX 應用程式路由外掛的 AKS 叢集目前不需要立即採取行動。 Microsoft 將為應用程式路由附加 NGINX Ingress 資源提供關鍵安全修補程式的官方支援,支援至 2026 年 11 月。
AKS 正與上游 Kubernetes 對齊,將 Gateway API 作為入口和 L7 流量管理的長期標準。 我們建議您根據目前的設定開始規劃遷移路徑:
- 應用程式路由附加元件使用者:生產工作負載將完全支援至 2026 年 11 月。 遷移至 應用路由閘道 API 實作 ,以獲得基於閘道 API 的入口流量管理體驗。
-
OSS NGINX 使用者 有多種選擇:
- 在規劃長期閘道 API 遷移期間,請遷移至 NGINX 的應用程式路由外掛 ,享受官方支援至 2026 年 11 月。
- 遷移至 應用路由閘道 API 實作 ,以獲得基於閘道 API 的入口流量管理體驗。
- 遷移至 Application Gateway for Containers,該平台同時支援 Ingress API 與閘道 API。
- 服務網狀或進階入口需求:考慮 使用 Istio 服務網狀外掛的閘道 API 入口。 你可以將它用於 Ingress,而無需將 Sidecar 容器注入到你的工作負載內。 如果你需要請求標頭和主體大小限制、Lua 腳本或速率限制,請參考 Gateway API 的限制與替代方案。
AKS 中的輸入是 Kubernetes 資源,用來管理叢集中服務的外部類 HTTP 流量存取。 AKS 輸入可提供負載平衡、SSL 終止,以及依名稱的虛擬主機等服務。 如需 Kubernetes 輸入的詳細資訊,請參閱 Kubernetes 輸入文件。
對於大多數生產工作負載,建議先使用 AKS Automatic。 AKS Automatic 是 AKS 推薦的生產環境預設,提供網路、擴展、安全、監控及升級的管理預設。 對於入口來說,這表示你可以從管理式入口路徑開始,只有在需要更深入控制拓撲、路由行為或服務網格整合時才會轉向更專門的選項。
當你需要更明確的控制入口控制器選擇、部署拓撲或進階網路整合時,請使用 AKS 標準。
AKS 叢集模式與入口
AKS 支援兩種叢集模式:
- AKS Automatic:大多數生產工作負載的建議起點。 它降低營運開銷,並為入口及相關網路元件提供管理預設值。
- AKS 標準:最適合在需要明確控制入口控制器主機、服務暴露及進階流量管理模式時使用。
本文的進攻指引適用於兩種模式。 主要差別在於誰擁有更多平台預設值,以及你需要直接管理多少自訂。
輸入控制器
在管理應用程式流量時,輸入控制器透過在第 7 層運作來提供進階功能。 它們可依據傳入 URL 將 HTTP 流量路由至不同應用程式,讓流量發佈規則更聰明且更具彈性。 例如,輸入控制器可依 URL 路徑將流量導向不同的微服務,提升服務的效率與組織性。
另一方面,建立 LoadBalancer 類型的服務時,會設定基礎的 Azure 負載平衡器資源。 此負載平衡器在第 4 層運作,會將流量分配到您服務中指定連接埠的 Pod。 不過,第 4 層服務不了解實際應用程式,因此無法實作這類複雜的路由規則。
了解這兩種方法的差異,有助於為您的流量管理需求選擇合適的工具。
如果你用的是 AKS Automatic,建議先從管理式入口路徑開始,只有在工作負載需要時才使用更專門的選項。 在 AKS Standard 中,你可以有更多彈性選擇最適合你架構的入口控制器和拓撲。
比較輸入選項
特徵比較
下表列出不同入口控制器選項間的功能差異。 對於大多數生產 AKS 工作負載,建議的預設路徑是 AKS Automatic 中的受控輸入方式,除非您特別需要自訂路由、服務網格整合或 Azure 裝載的輸入。
| 功能 | 應用程式路由外掛 | 適用於容器的應用程式閘道 | Azure Service Mesh / Istio service mesh |
|---|---|---|---|
| 輸入/閘道控制器 | NGINX 輸入控制器 | 適用於容器的 Azure 應用程式閘道 | Istio 輸入閘道 |
| 應用程式介面 | 輸入 API | 輸入 API 與閘道 API | Istio 輸入 API |
| 裝載 | 叢集內 | Azure 裝載 | 叢集內 |
| 調整 | 自動調整 | 自動調整 | 自動調整 |
| 負載平衡 | 內部/外部 | 外部 | 內部/外部 |
| SSL 終止 | 叢集內 | 是:卸載與 E2E SSL | 叢集內 |
| mTLS | N/A | 是:前端與後端 | 是的 |
| 靜態 IP 位址 | 是的 | FQDN(無靜態 IP) | N/A |
| 儲存在 Azure Key Vault 中的 SSL 憑證 | 是的 | 是的 | N/A |
| 用於 DNS 區域管理的 Azure DNS 整合 | 是的 | 是的 | N/A |
何時使用每個入口控制器
下表列出您可能使用各輸入控制器的不同情境:
| 輸入選項 | 使用時機 |
|---|---|
| Managed NGINX - 應用程式路由外掛 | • 叢集內裝載、可自訂且可調整的 NGINX 輸入控制器。 • 基本負載平衡與路由能力。 • 內部與外部負載平衡器配置。 • 靜態 IP 位址配置。 • 與 Azure Key Vault 整合以管理憑證。 • 整合 Azure DNS 區域,用於公共與私有 DNS 管理。 • 支援 Ingress API。 |
| 適用於容器的應用程式閘道 | • Azure 裝載的輸入閘道。 • 由控制器管理的彈性部署策略,或自備容器應用閘道。 • 進階流量管理功能,例如自動重試、可用性區域復原能力、對後端目標的相互驗證 (mTLS)、流量分割/加權輪詢,以及自動調整。 • 與 Azure Key Vault 整合以管理憑證。 • 整合 Azure DNS 區域,用於公共與私有 DNS 管理。 • 支援 Ingress 與閘道 API。 |
| Istio 輸入閘道 | • 以 Envoy 為基礎,與 Istio 搭配作為服務網格時使用。 • 先進的流量管理功能,如速率限制與斷路功能。 • 支援 mTLS。 |
附註
Istio 外掛目前不支援 Istio 入口流量的閘道 API。
建立輸入資源
Application Routing 附加元件是在 AKS 中設定輸入控制器的建議方式,對大多數工作負載而言,在 AKS Automatic 中也建議先採用這個受控的輸入路徑。 應用程式路由外掛是一個完全管理的 AKS 入口控制器,提供以下功能:
- 輕鬆設定基於 Kubernetes NGINX Ingress Controller 的受管理 NGINX 入口控制器。
- 與 Azure DNS 整合,用於公用與私人區域管理
- 使用儲存在 Azure Key Vault 中的憑證進行 SSL 終止。
對大多數生產工作負載來說,這是一開始的正確預設。 如果你需要自訂入口拓撲、Azure 托管的入口或服務網狀行為,可以切換到其他入口選項。
欲了解更多關於應用路由外掛的資訊,請參閱 「受管理的 NGINX 與應用路由外掛的入口」。
用戶端來源 IP 保留
將您的輸入控制器設定為在 AKS 叢集中對容器的要求保留用戶端來源 IP。 當輸入控制器將用戶端要求路由至 AKS 叢集中的容器時,目標容器無法取得該要求的原始來源 IP。 啟用用戶端來源 IP 保留時,用戶端的來源 IP 會在要求標頭中的 X-Forwarded-For 提供。
若在輸入控制器上使用用戶端來源 IP 保留,則無法使用 TLS 直通。 用戶端來源 IP 保留與 TLS 直通可搭配其他服務使用,例如 LoadBalancer 類型。
這在 AKS Automatic 與 AKS Standard 中仍是重要的設計選擇,因為來源 IP 處理會影響可觀察性、可稽核性及應用程式行為,無論叢集模式為何。
如需深入了解用戶端來源 IP 保留,請參閱 AKS 中 LoadBalancer 服務的用戶端來源 IP 保留運作方式。