在本文中,您將了解如何設定 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 網域尾碼的萬用字元
httpProxy
、httpsProxy
和 trustedCa
預設不會有值。 將下列環境變數設置至 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 叢集。
- 使用 Azure CLI 設定 HTTP Proxy
- 使用 Azure Resource Manager (ARM) 範本設定 HTTP Proxy
- Istio 外部服務的附加元件 HTTP Proxy
您可以使用 az aks create
命令並以 JSON 檔案的形式傳入設定,在叢集建立期間設定具有 HTTP Proxy 的 AKS 叢集。
- 建立檔案並為
httpProxy
、httpsProxy
和noProxy
提供值。 如果您的環境需要,請為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_proxy
、https_proxy
及 no_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="
}
- 使用
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 檔案,並視需要更新 、httpProxy
httpsProxy
、 noProxy
和 trustedCa
的值。 此更新會使用新的 httpProxy
、httpsProxy
或 noProxy
值,將新的環境變數插入 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 中叢集節點的輸出流量。