管理服務會建立、更新及刪除 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 專案
- 已安裝及設定
aws
、terraform
和anthos-gke
指令列工具。 - GKE on AWS 建立管理叢集的 AWS 地區和可用區。
設定管理服務
您可以使用 YAML 檔案設定 GKE on AWS 管理服務。這個檔案類似 Kubernetes 自訂資源設定,但並非資源的表示法。
在已安裝及設定
aws
、terraform
和anthos-gke
指令列工具的電腦上開啟終端機。為 GKE on AWS 設定建立空白目錄,然後切換至這個目錄。GKE on AWS 文件使用
anthos-aws
做為範例設定目錄。mkdir anthos-aws cd anthos-aws
使用文字編輯器建立名為
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_1、ZONE_2 和 ZONE_3,以及要建立節點和控制層的 AWS EC2可用區。GKE on AWS 會在這些可用區中建立子網路。使用
anthos-gke
為使用者叢集產生設定時,GKE on AWS 會在這些可用區中建立控制層和節點集區,例如us-east-1a
。
如要使用anthos-gke
在單一區域中建立使用者叢集,可以移除 ZONE_2 和 ZONE_3。PRIVATE_CIDR_BLOCK_1、PRIVATE_CIDR_BLOCK_2 和 PRIVATE_CIDR_BLOCK_3,以及私有子網路的 CIDR 區塊。管理服務等 GKE on AWS 元件會在私有子網路中執行。這個子網路必須位於
vpcCIDRBlock
中指定的 VPC CIDR 範圍內。每個可用區都需要一個子網路,例如10.0.1.0/24
。PUBLIC_CIDR_BLOCK_1、PUBLIC_CIDR_BLOCK_2 和 PUBLIC_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,請刪除這一行。
執行
anthos-gke aws management init
,產生含有額外設定的anthos-gke.status.yaml
檔案。init
指令也會驗證anthos-gke.yaml
檔案中的AWSManagementService
物件。anthos-gke aws management init
執行
anthos-gke aws management apply
,在 AWS 上建立管理服務。anthos-gke aws management apply
anthos-gke aws management apply
指令最多可能需要十分鐘才能完成。指令完成後,管理服務就會在 AWS 上執行。
選填欄位
上方的 anthos-gke.yaml
檔案顯示一組典型的欄位,大多數客戶都會需要這些欄位。anthos-gke.yaml
中的設定也支援多個選填欄位。包括:
- spec.bootstrapS3Bucket 指定 AWS S3 值區,用於存放 GKE on AWS 設定資料
- spec.tags 為叢集相關 AWS 資源加上標記
- spec.securityGroupIDs 將其他安全群組 ID 指派給管理叢集
- spec.*Volume 及其子欄位 volumeType、iops 和 kmsKeyARN,可調整 EBS 磁碟區參數
- spec.terraform.stateGCSBucket:指定 Terraform 設定資料的 Google Cloud Service bucket
如要進一步瞭解 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 連線至管理服務,則不需要防禦主機。如要透過防禦主機連線至管理服務,請完成下列步驟:
使用
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
參照堡壘主機的安全殼層金鑰。如要開啟通道,請執行
bastion-tunnel.sh
指令碼。通道會從localhost:8118
轉送至防禦主機。如要開啟防禦主機的通道,請執行下列指令:
./bastion-tunnel.sh -N -4
這個視窗會顯示來自 SSH 通道的訊息。準備關閉連線時,請使用 Control+C 停止程序,或關閉視窗。
開啟新的終端機,然後將目錄變更為包含 GKE on AWS 設定的目錄。
產生用於驗證的
kubeconfig
。使用anthos-gke
將憑證附加至儲存在~/.kube/config
中的設定。anthos-gke aws management get-credentials
確認是否能透過
kubectl
連線至管理服務。env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
輸出內容會包含管理服務 API 伺服器的網址。
後續步驟
- 建立使用者叢集。
- 透過 GKE on AWS 使用 Proxy。
- 變更
kubectl
設定,以較少的指令列選項連線至 AWS 上的 GKE。