本主题介绍 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 设置为 -,前缀将被停用。 | 字符串 |