安裝管理服務

管理服務會建立、更新及刪除 GKE on AWS 叢集。本主題說明如何在專屬 AWS 虛擬私有雲 (VPC) 內建立管理服務。如果您已有 VPC,請改為參閱「與現有基礎架構相互整合」。

事前準備

開始使用 GKE on AWS 前,請務必完成下列工作:

  • 完成必要條件
  • 使用 Google Cloud CLI 進行驗證。
    gcloud auth login && \
        gcloud auth application-default login

所需值

如要完成本主題,您需要先完成先決條件,並取得下列項目:

  • KMS 金鑰 ARN 或別名
  • Google Cloud 服務帳戶金鑰
  • Google Cloud 專案
  • 已安裝及設定 awsterraformanthos-gke 指令列工具。
  • GKE on AWS 建立管理叢集的 AWS 地區和可用區。

設定管理服務

您可以使用 YAML 檔案設定 GKE on AWS 管理服務。這個檔案類似 Kubernetes 自訂資源設定,但並非資源的表示法。

  1. 在已安裝及設定 awsterraformanthos-gke 指令列工具的電腦上開啟終端機。

  2. 為 GKE on AWS 設定建立空白目錄,然後切換至這個目錄。GKE on AWS 文件使用 anthos-aws 做為範例設定目錄。

    mkdir anthos-aws
    cd anthos-aws
    
  3. 使用文字編輯器建立名為 anthos-gke.yaml 的檔案。將下列內容貼到檔案中。

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       dedicatedVPC:
         vpcCIDRBlock: VPC_CIDR_BLOCK
         availabilityZones:
         - ZONE_1
         - ZONE_2
         - ZONE_3
         privateSubnetCIDRBlocks:
         - PRIVATE_CIDR_BLOCK_1
         - PRIVATE_CIDR_BLOCK_2
         - PRIVATE_CIDR_BLOCK_3
         publicSubnetCIDRBlocks:
         - PUBLIC_CIDR_BLOCK_1
         - PUBLIC_CIDR_BLOCK_2
         - PUBLIC_CIDR_BLOCK_3
       # Optional
       bastionHost:
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
       proxy: PROXY_JSON_FILE # optional
    

    替換下列值:

    • AWS_REGION 替換為要執行叢集的 AWS 區域

    • ADMIN_AWS_IAM_ARN,並提供具有 AWS IAM 權限的使用者 Amazon Resource Name,即可建立管理服務。如要取得已向 aws 工具驗證的使用者 ARN,請執行 aws sts get-caller-identity

    • KMS_KEY_ARN,並提供 AWS KMS 金鑰或 KMS 金鑰別名的 Amazon 資源名稱,在建立期間保護管理服務的資料。例如: arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab。 如果沒有 ARN,請執行 aws kms list-keys 擷取 ARN 清單。

    • DATABASE_KMS_KEY_ARN,其中包含用來保護管理服務 etcd 資料庫的 AWS KMS 金鑰或金鑰別名 Amazon 資源名稱,例如 arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

    • GCP_PROJECT_ID,並將其替換為 Google Cloud 代管 GKE Enterprise 環境的專案 ID。

    • MANAGEMENT_KEY_PATH,並提供管理Google Cloud 服務帳戶金鑰的位置。

    • HUB_KEY_PATH,其中 Google Cloud是 Connect 服務帳戶金鑰的位置。

    • NODE_KEY_PATH,其中包含 GKE on AWS 節點服務帳戶金鑰的位置。

    • VPC_CIDR_BLOCK,並提供 anthos-gke 建立的 AWS VPC 的 IP 位址總 CIDR 範圍。例如 10.0.0.0/16。詳情請參閱 AWS 說明文件中的虛擬私有雲和子網路基本概念

    • ZONE_1ZONE_2ZONE_3,以及要建立節點和控制層的 AWS EC2可用區。GKE on AWS 會在這些可用區中建立子網路。使用 anthos-gke為使用者叢集產生設定時,GKE on AWS 會在這些可用區中建立控制層和節點集區,例如 us-east-1a
      如要使用 anthos-gke 在單一區域中建立使用者叢集,可以移除 ZONE_2ZONE_3

    • PRIVATE_CIDR_BLOCK_1PRIVATE_CIDR_BLOCK_2PRIVATE_CIDR_BLOCK_3,以及私有子網路的 CIDR 區塊。管理服務等 GKE on AWS 元件會在私有子網路中執行。這個子網路必須位於 vpcCIDRBlock 中指定的 VPC CIDR 範圍內。每個可用區都需要一個子網路,例如 10.0.1.0/24

    • PUBLIC_CIDR_BLOCK_1PUBLIC_CIDR_BLOCK_2PUBLIC_CIDR_BLOCK_3,並使用公有子網路的 CIDR 區塊。每個可用區都需要一個子網路。公開子網路會將負載平衡器等叢集服務,公開給 AWS 網路 ACL安全群組中指定的安全群組和位址範圍,例如 10.0.100.0/24

    • SSH_CIDR_BLOCK,並使用允許傳入 SSH 連線至防禦主機的 CIDR 區塊,例如 203.0.113.0/24。如要允許從任何 IP 位址建立 SSH 連線,請使用 0.0.0.0/0

    • (選用) PROXY_JSON_FILE,並提供Proxy 設定檔的相對路徑。如果您未使用 Proxy,請刪除這一行。

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

    anthos-gke aws management init
    
  5. 執行 anthos-gke aws management apply,在 AWS 上建立管理服務。

    anthos-gke aws management apply
    

    anthos-gke aws management apply 指令最多可能需要十分鐘才能完成。指令完成後,管理服務就會在 AWS 上執行。

選填欄位

上方的 anthos-gke.yaml 檔案顯示一組典型的欄位,大多數客戶都會需要這些欄位。anthos-gke.yaml 中的設定也支援多個選填欄位。包括:

如要進一步瞭解 anthos-gke.yaml 支援的所有欄位,請參閱 AWS Management Service 參考資料。

連線至管理服務

接下來,請使用 anthos-gke 連線至 GKE on AWS 管理服務並進行驗證。

使用預設設定建立管理服務時,控制層會具備私人 IP 位址,無法從 AWS VPC 外部存取。您可以透過下列任一方式存取管理服務:

  • 透過 Amazon 的 AWS Direct Connect 服務
  • 透過防禦主機,在網際網路和 GKE on AWS 子網路之間代理連線
  • 透過 VPN

在專屬 VPC 中建立管理服務時,AWS 上的 GKE 會自動在公用子網路中建立堡壘主機。如果您透過 VPN 或 AWS Direct Connect 連線至管理服務,則不需要防禦主機。如要透過防禦主機連線至管理服務,請完成下列步驟:

  1. 使用 terraform 工具產生指令碼,開啟連往防禦主機的 SSH 通道。選擇 Terraform 版本,然後執行下列指令:

    Terraform 0.12、0.13

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform 0.14.3 以上版本

    terraform output -raw bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform 會建立 bastion-tunnel.sh 指令碼,並在 ~/.ssh/anthos-gke 參照堡壘主機的安全殼層金鑰。

  2. 如要開啟通道,請執行 bastion-tunnel.sh 指令碼。通道會從 localhost:8118 轉送至防禦主機。

    如要開啟防禦主機的通道,請執行下列指令:

    ./bastion-tunnel.sh -N -4
    

    這個視窗會顯示來自 SSH 通道的訊息。準備關閉連線時,請使用 Control+C 停止程序,或關閉視窗。

  3. 開啟新的終端機,然後將目錄變更為包含 GKE on AWS 設定的目錄。

  4. 產生用於驗證的 kubeconfig。使用 anthos-gke 將憑證附加至儲存在 ~/.kube/config 中的設定。

    anthos-gke aws management get-credentials
    
  5. 確認是否能透過 kubectl 連線至管理服務。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    輸出內容會包含管理服務 API 伺服器的網址。

後續步驟