Azure Kubernetes Service (AKS) 中的輸入

謹慎

Kubernetes SIG 網路與安全回應委員會宣布 Ingress NGINX 專案即將退休,維護將於 2026 年 3 月結束。 目前使用 NGINX 應用程式路由外掛的 AKS 叢集目前不需要立即採取行動。 Microsoft 將為應用程式路由附加 NGINX Ingress 資源提供關鍵安全修補程式的官方支援,支援至 2026 年 11 月。

AKS 正與上游 Kubernetes 對齊,將 Gateway API 作為入口和 L7 流量管理的長期標準。 我們建議您根據目前的設定開始規劃遷移路徑:

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 工作負載,建議的預設路徑是 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 保留運作方式。