使用 HTTP Proxy

本文說明如何透過 HTTP/HTTPS 代理伺服器,從 Azure 上的 GKE 轉送流量。建立叢集時,您可以指定 Proxy 設定。

總覽

GKE on Azure 可透過 Proxy 轉送輸出網際網路流量,原因如下:

  • 如要透過 Google Cloud 註冊叢集,請使用 Connect
  • 執行 Connect Agent
  • 如何從 Container Registry 下載映像檔

限制

  • httpProxy」和「httpsProxy」欄位不支援以 https:// 開頭的網址。你必須使用 http://。通訊埠 443 的要求會使用 HTTPS。
  • 您必須為 httpProxyhttpsProxynoProxy 設定值。
  • 叢集的 Proxy 設定 (資源群組 ID 和密鑰 ID) 無法變更。您必須建立新的叢集和節點集區,才能更新這些值。
  • 您可能需要在 noProxy 欄位中新增其他網域、IP 或 CIDR。建議您新增叢集的控制層子網路 CIDR (系統預設會新增 Pod 位址 CIDR 和服務位址 CIDR)。

必要條件

本節說明使用 Proxy 前必須套用的必要條件。

Azure Key Vault 設定

Azure 中的 GKE 會將 Proxy 設定資訊儲存在 Azure Key Vault 中。 如要透過 Azure 上的 GKE 設定 Proxy,您必須擁有在 Key Vault 中建立密鑰的權限。Key Vault 必須可從叢集的 VNet 存取。

Proxy 許可清單

如要讓 Azure 上的 GKE 連線至 Google Cloud 服務,Proxy 伺服器必須允許特定 Google 和 Microsoft 網域的流量。

.azure.com
.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com

GCP_LOCATION 替換為 GKE Enterprise 叢集所在的 Google Cloud 區域。指定 us-west1 或其他支援的區域

子網路網路安全性群組需求

如果您使用網路安全性群組 (NSG) 管理子網路的流量,NSG 規則必須允許外送 TCP 流量前往下列目的地:

  • AzureCloud:TCP,通訊埠 80 和 443

如要進一步瞭解如何搭配使用服務標記與 NSG,請參閱「Azure 服務標記」。

建立 Proxy 設定檔

Proxy 設定會以 JSON 字串的形式,儲存在 Azure Key Vault 秘密中。 您可以將這項設定以檔案形式傳遞至 az 指令列工具。本節說明如何建立該檔案。

下表說明這個檔案的內容。

欄位 說明 範例 必要
httpProxy Proxy 伺服器網址。值應包含主機名稱/IP 位址,以及選用的通訊埠、使用者名稱和密碼。 "http://user:password@10.184.37.42:80"
"10.184.37.42"
httpsProxy 加密 HTTPS 流量的 Proxy 網址。如果 httpsProxy 的值為空,系統會使用 httpProxy 網址。 "http://10.101.16.31:80"
noProxy 以半形逗號分隔的網址清單,這些網址會從 Proxy 排除。每個值可以是 IP 位址、CIDR 範圍、網域名稱或星號 (*)。以半形句號開頭指定的網域 (例如「.google.com」) 表示必須使用子網域。單一星號 * 會忽略所有 Proxy 設定。 "1.2.3.4,10.0.0.0/16,example.com,.site.com"
  1. 如要建立設定檔,請建立 JSON 檔案,其中包含 httpProxynoProxy 和選用 httpsProxy 金鑰的值。

    {
      "httpProxy": "AUTHENTICATION_URL",
      "httpsProxy": "AUTHENTICATION_URL",
      "noProxy": "NO_PROXY_ADDRESSES"
    }
    

    更改下列內容:

    • AUTHENTICATION_URL:包含 Proxy 使用者名稱和密碼的編碼網址
    • NO_PROXY_ADDRESSES:以半形逗號分隔的 CIDR 區塊和網址清單,例如 10.0.0.0/16,http://example.com

    儲存檔案,以供下一節使用。

  2. 使用 az 指令列工具,在 Azure Key Vault 中以這個 JSON 資料建立密鑰。

    az keyvault secret set --name SECRET_NAME \
    --vault-name KEY_VAULT_NAME \
    --file PROXY_CONFIGURATION_FILE
    

    更改下列內容:

    • SECRET_NAME:新密鑰的名稱
    • KEY_VAULT_NAME:Key Vault 的名稱
    • PROXY_CONFIGURATION_FILE:Proxy 設定檔的路徑。

      輸出內容會包含密鑰名稱和內容。現在建立叢集時,可以參照這個密鑰。

建立使用 Proxy 的叢集

如要設定 Azure 上的 GKE,以便使用 HTTP Proxy 進行輸出連線,請按照下列步驟操作:

請按照「建立叢集和節點集區」一文中的步驟操作,並傳遞 --proxy-resource-group-id--proxy-secret-id 旗標。

gcloud container azure clusters create CLUSTER_NAME \
  --proxy-resource-group-id=PROXY_RESOURCE_GROUP_ID \
  --proxy-secret-id=PROXY_SECRET_ID
    ...

更改下列內容:

  • CLUSTER_NAME:叢集名稱
  • PROXY_RESOURCE_GROUP_ID:代管叢集的資源群組
  • PROXY_SECRET_ID:包含 Proxy 設定的密鑰 ID,例如 https://VAULT_NAME.vault.azure.net/secrets/SECRET_NAME/SECRET_VERSION

後續步驟