AWSManagementService

AWSManagementService 資源包含 GKE on AWS 管理服務的設定資訊。

建立管理服務前,請先設定名為 anthos-gke.yaml 的 YAML 檔案。anthos-gke 工具會在建立管理服務時使用這項設定。

anthos-gke.yaml 檔案的內容取決於您是否使用 anthos-gke 建立專屬的 AWS 虛擬私有雲 (VPC),或是使用現有的 AWS VPC

專用虛擬私有雲

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_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 section
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  tags:
    tag-name: tag-value
  bastionHost:
    allowedSSHCIDRBlocks:
    - SSH_CIDR_BLOCK
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

現有 VPC

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  securityGroupIDs:
    - SECURITY_GROUP_IDS
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_PATH
  existingVPC:
    subnetID: [MANAGEMENT_SUBNET_ID]
    allowedSSHSecurityGroupIDs: [SSH_SECURITY_GROUPS]
  # Optional fields
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  ubuntuRepositoryMirror: 'packages.cloud.google.com'
  bastionHost:
    subnetID: [BASTION_HOST_SUBNET_ID]
    allowedSSHCIDRBlocks:
    - [SSH_CIDR_BLOCK]
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  tags:
    tag-name: tag-value
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

以下各節將說明這些欄位。

spec.version

spec.version 的值是管理服務 anthos- gke 建立的版本。版本與 anthos-gke version 的輸出內容相符。例如:aws-1.14.1-gke.0

spec.region

spec.region 的值是您要部署管理服務的 AWS 區域。例如:us-east-1

spec.authentication.awsIAM

spec.authentication.awsIAM.adminIdentityARNs 的值是字串,其中包含 AWS IAM 使用者的 Amazon 資源名稱 (ARN),且該使用者具有建立 GKE on AWS 管理服務的權限。例如:arn:aws:iam::123456789:user/someuser

spec.kmsKeyARN

spec.kmsKeyARN 的值是字串,其中包含在「必要條件」中建立的 AWS KMS 金鑰的 Amazon 資源名稱 (ARN) 或別名。GKE on AWS 會使用該金鑰進行封包加密。例如:arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

spec.databaseEncryption

spec.databaseEncryption.kmsKeyARN 的值是字串,其中包含 AWS KMS 金鑰的 Amazon 資源名稱 (ARN) 或金鑰別名。GKE on AWS 會使用這項金鑰加密叢集中的應用程式層級密鑰。例如:arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

spec.securityGroupIDs

spec.securityGroupIDs 的值是分配給管理服務 VM 的其他 AWS 安全群組 ID 清單。例如 `[sg-00123456789abcd, sg-00123456789def1]`。

spec.dedicatedVPC

這個欄位代表所需的虛擬私有雲設定。

名稱 說明 類型 範例
vpcCIDRBlock 所需 AWS VPC 的 CIDR 區塊。必須介於 /16 至 /28 位元之間。 string 10.0.0.0/16
availabilityZones 部署控制層副本的可用區。每個區域都有自己的子網路,且需要個別的 CIDR 區塊。 list(string) [us-east-1a, us-east-1b]
privateSubnetCIDRBlocks 每個可用區的 VPC 內私人子網路 CIDR 區塊。必須是 vpcCIDRBlock 的子集。每個可用區都需要一個子網路。 list(string) [10.0.101.0/24, 10.0.102.0/24]
publicSubnetCIDRBlocks 每個可用區中 VPC 內公開子網路的 CIDR 區塊。必須是 vpcCIDRBlock 的子集。每個可用區都需要一個子網路。 list(string) [10.0.1.0/24, 10.0.2.0/24]
bastionAllowedSSHCIDRBlocks 允許傳入 SSH 存取的 CIDR 區塊。這個欄位已在 GKE on AWS 1.5 中淘汰,請在 1.5 以上版本中使用 spec.bastionHost string [104.132.0.0/14]

spec.existingVPC

spec.existingVPC 下方的欄位可設定 GKE on AWS,以使用現有的 AWS VPC。

名稱 說明 類型 範例
subnetID 管理服務執行的子網路 ID。 string subnet-00123456789ab
allowedSSHSecurityGroupIDs 允許在 VPC 內透過 SSH 存取的安全群組 ID 清單。 list(string) [sg-00123456789abcd, sg-00123456789def1]

spec.googleCloud

spec.googleCloud設定專案 Google Cloud 和 IAM 服務帳戶金鑰下方的欄位。

名稱 說明 類型 範例
projectID Google Cloud Google Cloud 專案。 string my-gcp-project-id
serviceAccountKeys 服務帳戶金鑰的檔案路徑。 serviceAccountKeys

spec.googleCloud.serviceAccountKeys

spec.googleCloud.serviceAccountKeys 底下的欄位包含 GCP 服務帳戶金鑰的本機檔案路徑。如需各個金鑰的詳細說明,請參閱「必要條件」。

名稱 說明 類型 範例
managementService 管理叢集使用的服務帳戶金鑰 字串 <0x path/to/key/management-sa-key.json
connectAgent GKE Hub Connect 代理程式使用的服務帳戶金鑰 字串 <0x path/to/key/hub-sa-key.json
node 節點使用的服務帳戶金鑰 字串 path/to/key/node-sa-key.json

spec.iam

spec.iam 欄位,為 GKE on AWS 環境設定選用的 AWS IAM 參數。

名稱 說明 類型 範例
permissionsBoundary IAM 角色權限界線的 ARN string arn:aws:iam::126285863215:policy/testPolicyBoundary
路徑 IAM 角色的路徑 string /org_abc/team_abc/member_abc/

spec.bastionHost

spec.bastionHost 區段為選用項目,用於說明堡壘主機。

防禦主機是放置在公有子網路中的 EC2 執行個體。這個安全群組允許來自指定 CIDR 區塊的連入 SSH 存取權,以及連出 SSH 存取權,可連入 GKE on AWS 管理服務和使用者叢集。

您可以為 dedicatedVPCexistingVPC 安裝建立堡壘主機。allowedSSHCIDRBlocks 欄位會指定允許的連入位址範圍,且不得為空白。

如果沒有堡壘主機,GKE on AWS 會建立新的堡壘主機。

  • 如果是 dedicatedVPC 安裝作業,GKE on AWS 會建立子網路。
  • 如要安裝 existingVPC,您需要為堡壘主機提供子網路,並確保這個子網路可連線至虛擬私有雲。

如要修改堡壘主機,請變更或刪除 spec.bastionHost 欄位,然後執行 anthos-gke aws management init,接著執行 anthos-gke aws management apply

名稱 說明 類型 範例
subnetID 堡壘主機執行的子網路 ID。如果是 existingVPC 安裝作業,子網路必須允許從您將存取通訊埠 22 的位置輸入流量。此外,請確認 VPC 允許來自這個子網路的連入存取。如果是 dedicatedVPC 安裝作業,請勿指定這個欄位。GKE on AWS 會佈建具有必要存取權的子網路。 字串 subnet-003bdf7b0f5e21e45
allowedSSHCIDRBlocks 允許傳入 SSH 存取的 CIDR 區塊。 list(string) [104.132.0.0/14]
rootVolume 說明堡壘主機根磁碟區的物件。 object {volumeType: gp2}

spec.rootVolume、spec.dataVolume 和 spec.bastionHost.rootVolume

下表說明下列物件的常見欄位:

  • spec.rootVolume,適用於控制層根磁碟磁碟區
  • spec.dataVolume,適用於控制層資料磁碟磁碟區
  • spec.bastionHost.rootVolume,適用於堡壘主機根磁碟磁碟區
名稱 說明 類型 範例 必填
volumeType 節點的 AWS EBS 磁碟區類型。可以是 gp2 (預設) 或 gp3 string gp2
iops 磁碟區每秒佈建的 IO 作業數 (IOPS)。只有在 volumeTypeGP3 時才有效。詳情請參閱「通用 SSD 磁碟區 (gp3)」。 integer 5000
kmsKeyARN 用來加密 EBS 磁碟區的 AWS KMS 金鑰 ARN。詳情請參閱「使用客戶管理的 CMK 加密磁碟區」。 string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

spec.tags

名稱 說明 類型 範例
標記 指派給支援管理服務的每個 AWS 資源的選用鍵/值中繼資料。 map(string) {Environment: Production, Team: Analytics}

spec.proxy

spec.proxy 欄位可設定選用的 HTTP/HTTPS Proxy。

名稱 說明 類型 範例
proxy Proxy 設定檔的路徑。 anthos-gke.yaml 開始的相對路徑 proxy.json

spec.bootstrapS3Bucket

spec.bootstrapS3Bucket 欄位會為 GKE on AWS 設定 S3 bucket 名稱。

名稱 說明 類型 範例
bootstrapS3Bucket 選用欄位,用於指定 GKE on AWS 儲存設定資訊的 AWS S3 bucket 名稱。如要在同一個 AWS 區域中建立多個 GKE on AWS 管理服務,請將這個值設為專屬 bucket 名稱。 string example-s3-bucket

spec.terraform

spec.terraform.invokeManually」欄位會將 anthos-gke 指令設定為不建立管理服務。

名稱 說明 類型 範例
invokeManually 選用欄位,可設定 anthos-gke 指令列工具,在建構及驗證設定後,不要建立管理服務。如果將 invokeManually 設為 Yes,您可以手動編輯及套用 Terraform 設定檔 YesNo Yes
stateGCSBucket 選用欄位,用於指定 Terraform 儲存設定資料的現有 Google Cloud Storage 值區。 string example-GCS-bucket