Share via


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

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

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

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

限制與考量

下列案例不受支援

  • 每個節點集區的不同 Proxy 組態
  • 使用者/密碼驗證
  • API 伺服器通訊的自訂憑證頒發機構單位 (CA)
  • 以 Windows 為基礎的叢集
  • 使用虛擬機器可用性設定組的節點集區 (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。

開始之前

  • 您需要最新版的 Azure CLI。 執行 az --version 以尋找版本,然後執行 az upgrade 以升級版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI
  • 檢查是否有可用的 AKS 叢集升級 ,以確保您正在執行最新版本的 AKS。 如果您需要升級,請參閱 升級 AKS 叢集
  • Proxy 組態更新所需的OS檔案只能在節點映像升級程式期間更新。 設定 Proxy 之後,您必須升級節點映像以套用變更。 如需詳細資訊,請參閱升級 AKS 節點映像

使用 Azure CLI 設定 HTTP Proxy

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

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

{
  "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_proxyCIDR,但 Ruby 則支援。

範例輸入:

注意

CA 憑證應該是 PEM 格式憑證內容的 base64 編碼字串。

{
  "httpProxy": "http://myproxy.server.com:8080/", 
  "httpsProxy": "https://myproxy.server.com:8080/", 
  "noProxy": [
    "localhost",
    "127.0.0.1"
  ],
  "trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...b3Rpbk15RGszaWFyCkYxMFlscWNPbWVYMXVGbUtiZGkvWG9yR2xrQ29NRjNURHg4cm1wOURCaUIvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0="
}

建立檔案並提供、 httpsProxynoProxy的值httpProxy。 如果您的環境需要它,請提供的值 trustedCa。 接下來,您可以使用 命令來部署叢集 az aks create ,並將 --http-proxy-config 參數設定為您所建立的檔案。 您的叢集應該使用節點上設定的 HTTP Proxy 來初始化。

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

使用 Azure Resource Manager (ARM) 範本設定 HTTP Proxy

您可以使用 ARM 範本來部署具有 HTTP Proxy 的 AKS 叢集。 CLI 部署的相同架構存在於 下"properties"的定義中Microsoft.ContainerService/managedClusters,如下列範例所示:

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

在您的範本中,提供、 httpsProxynoProxy的值httpProxy。 如有必要,請提供的值 trustedCa。 接下來,您可以部署範本。 您的叢集應該使用節點上設定的 HTTP Proxy 來初始化。

更新 Proxy 組態

注意

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

您可以使用 命令,將 --http-proxy-config 參數設定為新的 JSON 檔案,視需要更新 、、 noProxytrustedCa 的值httpsProxyhttpProxy,更新叢集az aks update上的 Proxy 組態。 更新會使用新的 httpProxyhttpsProxynoProxy 值,將新的環境變數插入 Pod 中。 必須輪替 Pod,應用程式才能挑選它,因為環境變數值是由變動的許可 Webhook 插入。 對於 Kubernetes 下的元件,例如容器和節點本身,在執行節點映射升級之前,這不會生效。

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

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

升級 AKS 節點映像

設定 Proxy 之後,您必須升級節點映像以套用變更。 節點映像升級程式是更新 Proxy 組態更新所需的OS檔案的唯一方法。 節點映射升級程式是滾動升級,可更新節點集區中每個節點上的OS映像。 AKS 控制平面會處理升級程式,這與執行中的應用程式不中斷。

若要升級 AKS 節點映射,請參閱 升級 Azure Kubernetes Service (AKS) 節點映像

監視附加元件設定

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

  • 輸出 Proxy 無驗證
  • 輸出 Proxy 搭配使用者與名稱密碼驗證
  • 輸出 Proxy 搭配 Log Analytics 端點的受信任憑證

不支援下列設定:

  • 搭配信任憑證使用 Proxy 時的自定義計量和建議警示功能

下一步

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