AWSCluster

本主题介绍 AWSCluster 自定义资源定义的配置选项。

定义 AWSCluster

AWSCluster 是一种由 GKE on AWS 定义的 Kubernetes 自定义资源。此资源表示 GKE on AWS 控制平面

如需基于此模板创建集群,请复制以下 YAML 并完成 spec.networkingspec.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.rootVolumespec.etcd.mainVolume

名称 说明 类型 示例 必需
sizeGiB 根卷的大小(以 GB 为单位)。 integer 10
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.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 进行的身份验证,请将 extraParams 设置为 prompt=consent。对于 Google Cloud Identity,请将 extraParams 设置为 prompt=consent,access_type=offline

英文逗号分隔列表
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 设置为 -,前缀将被停用。字符串