本主题介绍 AWSCluster 自定义资源定义的配置选项。
定义 AWSCluster
AWSCluster 是一种由 GKE on AWS 定义的 Kubernetes 自定义资源。此资源表示 GKE on AWS 控制平面。
如需基于此模板创建集群,请复制以下 YAML 并完成 spec.networking 和 spec.controlPlane 字段定义中定义的突出显示值。然后,将资源清单应用于您的管理服务。
apiVersion: multicloud.cluster.gke.io/v1
kind: AWSCluster
metadata:
  name: CLUSTER_NAME
spec:
  region: AWS_REGION
  networking:
    vpcID: VPC_ID
    podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS
    serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS
    serviceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS
  controlPlane:
    version: GKE_VERSION # Latest version is 1.25.5-gke.2100
    instanceType: AWS_INSTANCE_TYPE
    keyName: SSH_KEY_NAME
    subnetIDs:
    - CONTROL_PLANE_SUBNET_IDS
    securityGroupIDs:
    - CONTROL_PLANE_SECURITY_GROUPS
    iamInstanceProfile: CONTROL_PLANE_IAM_ROLE
    databaseEncryption:
      kmsKeyARN: ARN_OF_KMS_KEY
    hub:
      membershipName: ANTHOS_CONNECT_NAME
    cloudOperations: # Optional
      projectID: YOUR_PROJECT
      location: GCP_LOCATION
      enableLogging: ENABLE_LOGGING
      enableMonitoring: ENABLE_MONITORING
    tags:
      TAG_KEY: TAG_VALUE
    proxySecretName: PROXY_SECRET_NAME
    workloadIdentity:
      oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
    rootVolume:  # Optional
      sizeGiB: ROOT_VOLUME_SIZE
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
    etcd:  # Optional
      mainVolume:
        sizeGiB: ETCD_VOLUME_SIZE
        volumeType: ETCD_VOLUME_TYPE
        iops: ETCD_VOLUME_IOPS
        kmsKeyARN: ETCD_VOLUME_KEY
  authentication:
    awsIAM:
      adminIdentityARNs: ADMIN_IAM_ARN
    oidc: # Optional
    - certificateAuthorityData: CERTIFICATE_STRING
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      extraParams:  EXTRA_PARAMS
      groupsClaim:  GROUPS_CLAIM
      groupPrefix:  GROUP_PREFIX
      issuerURI:  ISSUER_URL
      kubectlRedirectURI:  KUBECTL_REDIRECT_URL
      scopes:  SCOPES
      userClaim:  USER_CLAIM
      userPrefix:  USER_PREFIX
以下部分介绍了 spec 下的子字段。
spec.networking
此对象定义集群范围的网络配置。
| 名称 | 说明 | 类型 | 示例 | 必需 | 
|---|---|---|---|---|
| vpcID | 集群在其中运行的 VPC 的 ID。用户集群的控制平面和节点池在单个 VPC 中运行。 | string | vpc-0814934042d983118 | 是 | 
| podAddressCIDRBlocks | 集群的 pod 使用的 IPv4 地址范围。目前仅支持单个范围。 此范围不得与从您的网络访问的任何子网重叠。您可以放心地在多个不同的 AWSCluster 对象中使用相同的范围。 | list(string) | [10.1.0.0/16] | 是 | 
| serviceAddressCIDRBlocks | 集群的服务使用的 IPv4 地址范围。目前仅支持单个范围。 此范围不得与从您的网络访问的任何子网重叠。您可以放心地在多个不同的 AWSCluster 对象中使用相同的范围。 | list(string) | [10.2.0.0/16] | 是 | 
| serviceLoadBalancerSubnetIDs | 子网 ID(GKE on AWS 可在其中创建公共或专用负载平衡器)。GKE on AWS 将标记应用于每个子网,以支持负载均衡。ALB 支持需要多个指定子网。 | list(string) | [subnet-abcdefg, subnet-12345678] | 
spec.controlPlane
此对象包含集群控制平面的常见参数。
| 名称 | 说明 | 类型 | 示例 | 必需 | 
|---|---|---|---|---|
| 版本 | 控制层面的 GKE 版本。如需了解详情,请参阅版本控制和升级以及升级用户集群。 | string | 1.25.5-gke.2100 | 是 | 
| instanceType | 每个控制平面副本的 AWS EC2 实例类型。请参阅支持的实例类型。 | string | m5.large | 是 | 
| keyName | 分配给每个控制平面副本的 AWS EC2 密钥对。 | string | my-key-pair | 是 | 
| subnetIDs | 控制平面副本的 VPC 子网列表。 | list(string) | [subnet-06a004869a1eae947] | 是 | 
| securityGroupIDs | GKE on AWS 会自动创建安全组,其中包含正常运行的集群所需的最少规则。如果您要添加其他有权访问控制平面副本的安全组,请将其 ID 添加到 securityGroupIDs。 | list(string) | [sg-0ec06559d997a796f] | 否 | 
| iamInstanceProfile | 分配给控制平面副本的 AWS EC2 实例配置文件的名称。 | string | my-control-plane-profile | 是 | 
| databaseEncryption.kmsKeyARN | GKE on AWS 用来加密集群中的应用层 Secret 的 AWS KMS 密钥的 Amazon 资源名称 (ARN)。 | 字符串 | arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee | |
| hub.membershipName | 用于注册集群的 Connect 成员资格的名称。 | 字符串 | projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME | |
| cloudOperations | 控制平面节点的 Cloud Logging 和 Cloud Monitoring 配置。 | object | {projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} | 否 | 
| 标记 | 分配给支持 AWSCluster 的每个 AWS 资源的键/值元数据。如需了解详情,请参阅标记的最佳做法 | map(string) | {Environment: Production, Team: Analytics} | 否 | 
| proxySecretName | 用户选择的 Secret 名称,用于定义集群专用网络代理 | 字符串 | proxy-secret-0 | 否 | 
| workloadIdentity | Workload Identity 配置的 Cloud Storage 存储桶。包含一个字段: oidcDiscoveryGCSBucket。 | object | {oidcDiscoveryGCSBucket: my-bucket} | 否 | 
| rootVolume | 控制平面副本根卷的参数。包含以下部分中定义的对象。 | object | {sizeGiB: 10} | 是 | 
| etcd | etcd 卷的参数。包含以下部分中定义的对象。 | object | {sizeGiB: 10} | 是 | 
spec.controlPlane.rootVolume 和 spec.etcd.rootVolume
这些字段同时适用于 spec.controlPlane.rootVolume 和 spec.etcd.mainVolume。
| 名称 | 说明 | 类型 | 示例 | 必需 | 
|---|---|---|---|---|
| sizeGiB | 根卷的大小(以 GB 为单位)。 | integer | 10 | 是 | 
| 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.authentication.awsIAM
此对象指定通过 AWS IAM 被授予集群管理员访问权限的角色。
| 名称 | 说明 | 类型 | 示例 | 必需 | 
|---|---|---|---|---|
| adminIdentityARNs | 被授予集群管理员访问权限的 AWS IAM 用户或角色的 ARN。 | 字符串 | arn:aws:iam::123456789012:user/admin | 仅在使用 AWS IAM 身份验证时才需要。 | 
spec.authentication.oidc
您可以指定多个 oidc 对象。下面定义了 oidc 对象。
如需了解详情,请参阅使用 OIDC 进行身份验证。
| 字段 | 必需 | 说明 | 格式 | 
|---|---|---|---|
| certificateAuthorityData | 否 | OIDC 提供方的 base64 编码的 PEM 编码证书。要创建字符串,请将证书(包括标头)进行 base64 编码。将生成的字符串作为单独的一行添加到 certificateAuthorityData中。示例:certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== | 字符串 | 
| clientID | 是 | 向 OpenID 提供方发出身份验证请求的客户端应用的 ID。 | 字符串 | 
| clientSecret | 否 | OIDC 客户端应用和 OIDC 提供方之间的共享密钥令牌。 | 字符串 | 
| extraParams | 否 | 要发送到 OpenID 提供方的其他键值对参数。如果您要向群组授权,请传入 resource=token-groups-claim。
      如果您的授权服务器提示是否同意,则对于使用 Microsoft Azure 和 Okta 进行的身份验证,请将  | 英文逗号分隔列表 | 
| groupsClaim | 否 | 提供方用于返回安全组的 JWT 声明。 | 字符串 | 
| groupPrefix | 否 | 附加到群组声明前面的前缀,以防止与现有名称冲突。例如,给定一个组 foobar 和一个前缀 gid-,则格式为 gid-foobar。 | 字符串 | 
| issuerURI | 是 | 用于向 OpenID 发送授权请求的网址,例如 https://example.com/adfs。Kubernetes API 服务器使用此网址来发现用于验证令牌的公钥。URI 必须使用 HTTPS。 | 网址字符串 | 
| kubectlRedirectURI | 是 | 用于授权的重定向网址“kubectl”。 | 网址字符串 | 
| scopes | 是 | 要发送到 OpenID 提供方的其他范围。Microsoft Azure 和 Okta 需要 offline_access范围。 | 英文逗号分隔列表 | 
| userClaim | 否 | 用作用户名的 JWT 声明。默认值为“sub”,该值应为最终用户的唯一标识符。您可以选择其他声明,例如电子邮件或名称,具体取决于 OpenID 提供商。不过,电子邮件以外的声明会以颁发者网址作为前缀,以防止命名冲突。 | 字符串 | 
| userPrefix | 否 | 附加到用户名声明前面的前缀,以防止与现有名称冲突。如果您未提供此字段,并且用户名是电子邮件地址以外的其他值,则前缀默认为 issuerurl#。如果将userPrefix设置为-,前缀将被停用。 | 字符串 |