AWSManagementService

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 项目。 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 访问。

您可以创建堡垒主机以用于 dedicatedVPCexistingVPC 安装。allowedSSHCIDRBlocks 字段指定允许的入站地址范围,并且不能为空。

如果堡垒主机不存在,则 GKE on AWS 会创建新的堡垒主机。

  • 对于 dedicatedVPC 安装,GKE on AWS 会创建一个子网。
  • 对于 existingVPC 安装,您需要为堡垒主机提供一个子网,并确保此子网连接到您的 VPC。

您可以修改堡垒主机,方法是更改或删除 spec.bastionHost 字段,然后依次运行 anthos-gke aws management initanthos-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 用于对卷进行加密的 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 配置文件 YesNo Yes
stateGCSBucket 可选字段,用于指定一个现有的 Google Cloud Storage 存储桶,Terraform 可以用它来存储其配置数据。 string example-GCS-bucket