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