支援 EKS 連接叢集的 Proxy

如果貴機構使用 HTTP Proxy 處理網際網路流量,您必須相應設定 GKE 連結的叢集。本文說明如何進行這項設定。

事前準備

GKE 附加叢集需要連線至各種 Google Cloud 服務。請確認 Proxy 伺服器允許流量傳輸至下列網域:

  • .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 替換為叢集所在的 Google Cloud 區域。指定 us-west1 或其他支援的區域

為 GKE 連接的叢集設定 Proxy 支援

如要為 GKE 連接的叢集設定 Proxy 支援,請按照下列步驟操作:

  1. 建立 Proxy 設定檔,其中包含 httpProxynoProxyhttpsProxy 鍵的值:

    {
    "httpProxy": HTTP_PROXY_AUTHENTICATION_URL,
    "httpsProxy": HTTPS_PROXY_AUTH_URL,
    "noProxy": NO_PROXY_ADDRESSES
    }
    

    更改下列內容:

    • HTTP_PROXY_AUTHENTICATION_URL:Proxy 伺服器網址,包含主機名稱/IP 位址,以及選用的通訊埠、使用者名稱和密碼。例如:http://user:password@192.0.2.0:80198.51.100.255
    • :加密 HTTPS 流量的 Proxy 網址,包含主機名稱/IP 位址,以及選用的連接埠、使用者名稱和密碼。HTTPS_PROXY_AUTH_URL
    • NO_PROXY_ADDRESSES:以逗號分隔的清單,列出可略過 Proxy 的資源網址、CIDR 區塊和 DNS 名稱。這會指示 GKE 連結的叢集,避免對指定資源使用 Proxy。請注意下列事項:
      • 值可以是個別 IP 位址、CIDR 範圍、網域名稱,甚至是星號字元 (*)。在 noProxy 欄位中使用單一星號 (*),可讓 GKE 連結的叢集略過所有流量的 Proxy。
      • 以半形句點開頭的網域 (例如 .google.com) 會指定所有子網域。舉例來說,.google.com 包含 mail.google.comdrive.google.com 等地址,但不包含 google.com
      • 請務必加入 kubernetes.default.svc.cluster.localkubernetes.default.svc 網域,確保系統能正確記錄。範例如下: 198.51.100.0,192.0.2.0/16,examplepetstore.com,.altostrat.com,kubernetes.default.svc.cluster.local, kubernetes.default.svc

    建立 Proxy 設定檔時,請遵守下列規範:

    • httpProxyhttpsProxy 欄位不接受 https:// 前置字串。即使實際的 Proxy 伺服器位址以 https:// 開頭,也請使用 http://。 舉例來說,https://proxy.example.com:3128 可表示為 http://proxy.example.com:3128
    • 請務必為所有三個欄位提供值:httpProxyhttpsProxynoProxy
    • 考慮在 noProxy 清單中附加其他網域、IP 位址或 CIDR。建議您加入 VPC IP 範圍。
  2. 執行下列指令,建立含有 Proxy 設定的 Kubernetes Secret:

    kubectl create secret generic SECRET_NAME \
    --from-file=PROXY_CONFIGURATION_FILE
    

    更改下列內容:

    • SECRET_NAME:Kubernetes Secret 的名稱
    • PROXY_CONFIGURATION_FILE:您在步驟 1 建立的 Proxy 設定路徑。
  3. 將 Kubernetes Secret 標示為immutable,方法是將 immutable 欄位設為 true

    kubectl edit secret SECRET_NAME
    

    請將 SECRET_NAME 替換為 Kubernetes Secret 的名稱。

  4. 設定新叢集或現有叢集來使用 Proxy:

    新增叢集

    如要註冊新叢集並套用 Proxy 設定,請使用 gcloud container attached clusters register 指令。請務必提供選用引數 --proxy-secret-name--proxy-secret-namespace

    gcloud container attached clusters register CLUSTER_NAME \
      --proxy-secret-name=SECRET_NAME \
      --proxy-secret-namespace=SECRET_NAMESPACE
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱
    • SECRET_NAME:包含 Proxy 設定的 Kubernetes Secret 名稱
    • SECRET_NAMESPACE:儲存 Secret 的 Kubernetes 命名空間

    如要瞭解註冊叢集時可使用的所有引數,請參閱 gcloud container attached clusters register 指令

    現有的叢集

    如要使用新的 Proxy 設定更新先前註冊的叢集,請使用 gcloud container attached clusters update 指令。請務必提供選用引數 --proxy-secret-name--proxy-secret-namespace

    gcloud container attached clusters update CLUSTER_NAME \
      --proxy-secret-name=SECRET_NAME \
      --proxy-secret-namespace=SECRET_NAMESPACE
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱
    • SECRET_NAME:包含 Proxy 設定的 Kubernetes Secret 名稱
    • SECRET_NAMESPACE:儲存 Secret 的 Kubernetes 命名空間

    如果 Proxy 伺服器詳細資料已變更,或初始叢集註冊程序忽略了 Proxy 需求,就必須執行這個步驟。

    如要瞭解更新叢集時可使用的所有引數,請參閱 gcloud container attached clusters update 指令

完成這些步驟後,GKE 連結的叢集會使用設定檔中指定的 Proxy 伺服器,處理對外網際網路流量。