AWSManagementService 资源包含 GKE on AWS 管理服务的配置信息。
您可以在创建管理服务之前配置名为 anthos-gke.yaml 的 YAML 文件。anthos-gke 工具会在创建管理服务时使用该配置。
anthos-gke.yaml 文件的内容取决于您是使用 anthos-gke 来为您创建专用 AWS Virtual Private Cloud (VPC),还是使用现有 AWS VPC。
专用 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 的值是一个字符串,其名称为Amazon 资源名称 (ARN) 或在前提条件中创建的 AWS KMS 密钥的别名。GKE on AWS 使用此密钥进行信封加密。例如 arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee。
spec.databaseEncryption
spec.databaseEncryption.kmsKeyARN 的值是一个字符串,其名称为 Amazon 资源名称 (ARN) 或 AWS KMS 密钥的密钥别名(GKE on AWS 使用该密钥加密集群中的应用层 Secret)。例如 arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee。
spec.securityGroupIDs
spec.securityGroupIDs 的值是分配给管理服务虚拟机的其他 AWS 安全群组 ID 的列表。例如 [sg-00123456789abcd, sg-00123456789def1]`。
spec.dedicatedVPC
此字段表示所需的 VPC 设置。
| 名称 | 说明 | 类型 | 示例 | 
|---|---|---|---|
| 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 列表。 | 列表(字符串) | [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 | 管理集群使用的服务账号密钥 | 字符串 | path/to/key/management-sa-key.json | 
| connectAgent | GKE Hub Connect Agent 使用的服务账号密钥 | 字符串 | 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 访问和对 GKE on AWS 管理服务和用户集群的出站 SSH 访问。
您可以创建堡垒主机以用于 dedicatedVPC 或 existingVPC 安装。allowedSSHCIDRBlocks 字段指定允许的入站地址范围,并且不能为空。
如果堡垒主机不存在,则 GKE on AWS 会创建新的堡垒主机。
- 对于 dedicatedVPC安装,GKE on AWS 会创建一个子网。
- 对于 existingVPC安装,您需要为堡垒主机提供一个子网,并确保此子网连接到您的 VPC。
您可以修改堡垒主机,方法是更改或删除 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)。仅在 volumeType为GP3时有效。如需了解详情,请参阅通用 SSD 卷 (gp3)。 | integer | 5000 | 否 | 
| kmsKeyARN | 用于对卷进行加密的 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 | 代理配置文件的路径。 | anthos-gke.yaml的相对路径 | proxy.json | 
spec.bootstrapS3Bucket
spec.bootstrapS3Bucket 字段配置 GKE on AWS 的 S3 存储分区名称。
| 名称 | 说明 | 类型 | 示例 | 
|---|---|---|---|
| bootstrapS3Bucket | GKE on AWS 在其中存储配置信息的 AWS S3 存储分区名称的可选字段。 如果要在同一 AWS 区域中创建多个 GKE on AWS 管理服务,请将该值设置为唯一的存储桶名称。 | string | example-s3-bucket | 
spec.terraform
spec.terraform.invokeManually 字段会将 anthos-gke 命令配置为不创建管理服务。
| 名称 | 说明 | 类型 | 示例 | 
|---|---|---|---|
| invokeManually | 可选字段,可将 anthos-gke命令行工具配置为在构建和验证配置后不创建管理服务。如果将invokeManually设置为Yes,则可以手动修改并应用 Terraform 配置文件。 | Yes,No | Yes | 
| stateGCSBucket | 可选字段,用于指定一个现有的 Google Cloud Storage 存储桶,Terraform 可以用它来存储其配置数据。 | string | example-GCS-bucket |