透過 GKE on AWS 使用 Proxy

本主題說明如何透過 HTTP/HTTPS Proxy,從 AWS 上的 GKE 管理服務和 Connect 路由傳輸流量。

GKE on AWS 需要網際網路連線,原因如下:

  • 管理服務會向 Connect 註冊使用者叢集。
  • 使用者叢集會執行 Connect Agent。
  • 所有管理服務和使用者叢集節點都會從 Container Registry 下載映像檔。

您可以透過 HTTP 或 HTTPS Proxy 轉送這類流量。從 GKE on AWS 1.8 開始,您可以為管理服務和每個叢集設定個別的 Proxy 設定。如要進一步瞭解如何變更 Proxy 設定,請參閱「變更叢集 Proxy 設定」。

您可以在 anthos-gke.yaml 參照的 JSON 檔案中宣告 Proxy 設定。

必要條件

如要設定 GKE on AWS 使用 Proxy,請先啟用 AWS VPC 端點、定義 Proxy 的安全群組,並允許連出至特定 Google Cloud 服務。

如要使用 HTTP Proxy,使用者叢集必須執行 Kubernetes 1.17 以上版本。

啟用虛擬私有雲端點

設定 Proxy 前,請先為 GKE on AWS 安裝建立 VPC 端點。虛擬私有雲端點可讓私有子網路中的資源存取 AWS 服務,不必連上公開網際網路。

下表列出 GKE on AWS 需要虛擬私有雲端端點的 AWS 服務,以及端點類型和安全群組,適用於需要存取端點的每個 GKE on AWS 元件。

服務 端點類型 安全性群組
自動調度資源 介面 管理、控制層、節點集區
EC2 介面 管理、控制層、節點集區
負載平衡 介面 管理、控制層、節點集區
Key Management Service 介面 管理、控制層、節點集區
S3 閘道 管理、控制層、節點集區
安全性權杖服務 (STS) 介面 管理、控制層、節點集區

您可以透過 AWS VPC 控制台建立端點。建立虛擬私有雲端端點時設定的選項,取決於虛擬私有雲端設定。

定義安全性群組

AWS 上的 GKE 元件必須能夠連線至 Proxy 伺服器。建立或找出允許連出至 Proxy 伺服器的 AWS安全群組。安全性群組應允許從管理、控制層和節點集區安全性群組,對 Proxy 位址和通訊埠進行輸出存取。儲存這個安全性群組的 ID (例如 sg-12345678)。

類型 通訊協定 出發港口 目的地通訊埠 地址
輸出 TCP Proxy 通訊埠 Proxy 通訊埠 Proxy 安全性群組

允許連線至 Google Cloud 服務

如要讓 GKE on AWS 連線至 Google Cloud 服務,Proxy 伺服器必須允許下列網域的流量:

  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • oauth2.googleapis.com
  • storage.googleapis.com
  • www.googleapis.com
  • gcr.io
  • k8s.gcr.io
  • EC2-REGION.ec2.archive.ubuntu.com

EC2-REGION 替換為執行 GKE on AWS 安裝作業的 AWS EC2 區域。例如:us-west-1.ec2.archive.ubuntu.com/

如果您使用 Cloud Service Mesh with Prometheus and Kiali,請允許從下列網域發出的輸出存取要求:

  • docker.io
  • quay.io

建立 Proxy 設定 JSON 檔案

Proxy 設定 JSON 檔案包含一個物件,其中有三組鍵/值配對,鍵名分別為 httpProxyhttpsProxynoProxy。系統會先使用 AWS KMS 金鑰將使用者名稱和密碼進行信封加密,再套用至伺服器。

{
  "httpProxy": "HTTP_PROXY",
  "httpsProxy": "HTTPS_PROXY",
  "noProxy": "NO_PROXY"
}

更改下列內容:

  • HTTP_PROXY,並提供 Proxy 伺服器位址,以轉送 HTTP 要求。
  • HTTPS_PROXY,透過 Proxy 伺服器轉送 HTTPS 要求。
  • NO_PROXY,並視需要列出不使用 Proxy 的 IP、CIDR 範圍和網域。

詳情請參閱設定參考資料。 舉例來說,下列設定會使用 10.0.0.254 的 Proxy,並排除多個網站。

{
  "httpProxy": "http://user:password@10.0.0.254:80",
  "httpsProxy": "http://user:password@10.0.0.254:443",
  "noProxy": "localhost,127.0.0.1,169.254.169.254,10.0.0.0/16,example.com"
}

將 Proxy 新增至 anthos-gke.yaml

請按照下列步驟設定 AWSManagementService:

  1. 切換至 GKE on AWS 設定所在的目錄。 您在安裝管理服務時建立了這個目錄。

    cd anthos-aws

  2. 在文字編輯器中開啟 anthos-gke.yaml。為 spec.proxy 新增值,如以下範例所示。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
      name: management
    spec:
      version: aws-1.14.1-gke.0
      proxy: PROXY_JSON_FILE
      securityGroupIDs:
      - SECURITY_GROUP_ID
      ...
    

    更改下列內容:

    • PROXY_JSON_FILE,並將其替換為 Proxy 的 JSON 設定相對路徑。
    • SECURITY_GROUP_ID,並提供有權存取 Proxy 伺服器的安全群組 ID。

    儲存檔案。

  3. 執行 anthos-gke aws management init,產生含有額外設定的 anthos-gke.status.yaml 檔案。init 指令也會驗證 anthos-gke.yaml 檔案中的 AWSManagementService 物件。

    anthos-gke aws management init
    
  4. 執行 anthos-gke aws management apply,在 AWS 上更新管理服務。

    anthos-gke aws management apply
    
  5. 接著,請建立使用者叢集。在 AWSClusterAWSNodePoolspec.controlPlane.securityGroupIDsspec.securityGroupIDs 中,分別加入 Proxy 的安全性群組。spec.securityGroupIDs叢集隨後就能存取 Proxy。

設定參考資料

欄位 說明 範例 必填
httpProxy Proxy 伺服器網址。值應包含主機名稱/IP 位址,以及選用的通訊埠、使用者名稱和密碼。 "http://user:password@10.184.37.42:80"
httpsProxy 加密 HTTPS 流量的 Proxy 網址。如未提供 httpsProxy,系統會使用 httpProxy 網址。 "http://user:password@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"

後續步驟

如要進一步瞭解如何完成 GKE on AWS 安裝作業,請參閱下列文章:

如要瞭解如何變更叢集的 Proxy 設定,請參閱: