共用方式為


Azure Kubernetes Service (AKS) 中的 HTTP Proxy 支援

在本文中,您將了解如何設定 Azure Kubernetes Service (AKS) 叢集,以使用 HTTP Proxy 進行輸出的網際網路存取。

部署至受控或自訂虛擬網路的 AKS 叢集具有某些要正常運作所需的輸出相依性,這會在需要透過 HTTP Proxy 路由傳送網際網路存取的環境中產生問題。 節點無法啟動載入存取網際網路服務所需的設定、環境變數和憑證。

HTTP Proxy 功能會對 AKS 叢集新增 HTTP Proxy 支援,公開簡單的介面讓您保護 Proxy 相依環境中的 AKS 所需網路流量。 使用這項功能時,AKS 節點和 Pod 都會設定為使用 HTTP Proxy。 此功能也可在啟動叢集時,將受信任的憑證授權單位安裝到節點上。 更複雜的解決方案可能需要建立信任鏈結,才能跨網路建立安全通訊。

限制與考量

下列案例不受支援

  • 每個節點集區的不同 Proxy 組態
  • 使用者/密碼驗證
  • 用於 API 伺服器通訊的自訂憑證授權單位 (CA)
  • 具有 Windows 節點集區的 AKS 叢集
  • 使用虛擬機器可用性設定組的節點集區 (VMAS)
  • 使用 * 作為附加至 noProxy 網域尾碼的萬用字元

httpProxyhttpsProxytrustedCa 預設不會有值。 將下列環境變數設置至 Pod 中:

  • HTTP_PROXY
  • http_proxy
  • HTTPS_PROXY
  • https_proxy
  • NO_PROXY
  • no_proxy

若要停用 Proxy 環境變數的插入,您必須使用 "kubernetes.azure.com/no-http-proxy-vars":"true" 標註 Pod。

開始之前

您可以使用 az aks create 命令並以 JSON 檔案的形式傳入設定,在叢集建立期間設定具有 HTTP Proxy 的 AKS 叢集。

  1. 建立檔案並為 httpProxyhttpsProxynoProxy 提供值。 如果您的環境需要,請為 trustedCa 提供值。

組態檔的結構描述看起來與下列內容類似:

{
  "httpProxy": "string",
  "httpsProxy": "string",
  "noProxy": [
    "string"
  ],
  "trustedCa": "string"
}

檢閱每個參數的需求:

  • httpProxy:用來在叢集外部建立 HTTP 連線的 Proxy URL。 URL 配置必須是 http
  • httpsProxy:用來在叢集外部建立 HTTPS 連線的 Proxy URL。 如果未指定,則會使用 httpProxy 來進行 HTTP 和 HTTPS 連線。
  • noProxy:要排除 Proxy 之目的地網域名稱、網域、IP 位址或其他網路 CIDR 的清單。
  • trustedCa:包含 base64 encoded 替代 CA 憑證內容的字串。 目前僅支援 PEM 格式。

重要

為了與 Kubernetes 系統一部分的 Go 架構元件相容,憑證必須支援 Subject Alternative Names(SANs),而非支援已被取代的通用名稱憑證。

應用程式對於如何遵循環境變數 http_proxyhttps_proxyno_proxy 存在差異。 Curl 和 Python 在 no_proxy 中不支援 CIDR,但 Ruby 支援。

範例輸入:

{
  "httpProxy": "http://myproxy.server.com:8080/", 
  "httpsProxy": "https://myproxy.server.com:8080/", 
  "noProxy": [
    "localhost",
    "127.0.0.1"
  ],
  "trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...b3Rpbk15RGszaWFyCkYxMFlscWNPbWVYMXVGbUtiZGkvWG9yR2xrQ29NRjNURHg4cm1wOURCaUIvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
}
  1. 使用 az aks create 命令建立叢集,並將 --http-proxy-config 參數設定為您所建立的檔案。
az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --http-proxy-config aks-proxy-config.json \
    --generate-ssh-keys

您的叢集在初始化時,應該就會在節點上設定 HTTP Proxy。

更新叢集以啟用或更新 HTTP Proxy 設定

附註

如果切換至新的 Proxy,新的 Proxy 必須已經存在,才能成功更新。 升級完成後,您可以刪除舊的 Proxy。

您可以使用 az aks update 命令,在現有的叢集上啟用或更新 HTTP Proxy 組態。 參數--http-proxy-config應該設定為新的 JSON 檔案,並視需要更新 、httpProxyhttpsProxynoProxytrustedCa 的值。 此更新會使用新的 httpProxyhttpsProxynoProxy 值,將新的環境變數插入 Pod 中。

謹慎

當您使用 az aks update 命令更新叢集上的 Proxy 設定時,AKS 會自動重新映像叢集中的所有節點集區。 您可以使用 Pod 中斷預算 (PDB) 來保護重新安裝映像期間對重要 Pod 的中斷。

例如,假設您使用名為 aks-proxy-config-2.json 之新 CA 憑證的 base64 編碼字串建立了新檔案。 您可以使用下列命令更新叢集上的 Proxy 設定:

az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json

監視擴充功能設定

具有監視附加元件的 HTTP Proxy 支援下列設定:

  • 外部代理伺服器無需驗證
  • 出站代理配有使用者名稱與密碼驗證
  • 使用受信任憑證的外部代理伺服器,以連接至 Log Analytics 端點

不支援下列設定:

  • 使用搭配信任憑證的代理時的自訂指標與建議警示功能

下一步

如需 AKS 叢集網路需求的詳細資訊,請參閱控制 AKS 中叢集節點的輸出流量