本主題說明 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 | GKE on AWS 可在這些子網路 ID 中建立公開或私人的負載平衡器。GKE on AWS 會將標記套用至每個子網路,以支援負載平衡。ALB 支援功能需要指定多個子網路。 | list(string) |
[subnet-abcdefg, subnet-12345678] |
spec.controlPlane
這個物件包含叢集控制層的常見參數。
名稱 | 說明 | 類型 | 範例 | 必填 |
---|---|---|---|---|
version | 控制層的 GKE 版本。詳情請參閱「版本管理與升級」和「升級使用者叢集」。 | string |
1.25.5-gke.2100 |
是 |
instanceType | 每個控制層副本的 AWS EC2 執行個體類型。請參閱「支援的執行個體類型」。 | string |
m5.large |
是 |
keyName | 指派給每個控制層副本的 AWS EC2 金鑰組。 | string |
my-key-pair |
是 |
subnetIDs | 控制層副本的虛擬私有雲子網路清單。 | list(string) |
[subnet-06a004869a1eae947] |
是 |
securityGroupIDs | AWS 上的 GKE 會自動建立安全群組,其中包含叢集運作所需的最低規則。如要新增可存取控制層副本的其他安全性群組,請將這些群組的 ID 新增至 securityGroupIDs 。 |
list(string) |
[sg-0ec06559d997a796f] |
否 |
iamInstanceProfile | 指派給控制層副本的 AWS EC2 執行個體設定檔名稱。 | string |
my-control-plane-profile |
是 |
databaseEncryption.kmsKeyARN | GKE on AWS 用來加密叢集中應用程式層級密鑰的 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 | 使用者選擇的密鑰名稱,用於定義叢集專屬的網路 Proxy | 字串 | proxy-secret-0 | 否 |
workloadIdentity | 用於工作負載身分設定的 Cloud Storage bucket。包含單一欄位: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 | 用來加密 EBS 磁碟區的 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 供應商的
PEM 編碼憑證 (採用 Base64 編碼)。如要建立字串,請將憑證 (包含標頭) 的編碼方式改為 Base64 格式,並把產生的字串另列一行加入 certificateAuthorityData 。示例:
certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== |
字串 |
clientID | 是 | 向 OpenID 供應商提出驗證要求時使用的用戶端應用程式 ID。 | 字串 |
clientSecret | 否 | OIDC 用戶端應用程式與 OIDC 供應商之間共用的密鑰。 | 字串 |
extraParams | 否 |
要傳送給 OpenID 供應商的其他鍵/值參數。如要授權群組,請傳遞 resource=token-groups-claim 。
如果授權伺服器提示您同意,請將 |
以半形逗號分隔的清單 |
groupsClaim | 否 | 供應商用來傳回安全性群組的 JWT 憑證附加資訊。 | 字串 |
groupPrefix | 否 | 在群組憑證附加資訊的前方加上此字串,即可避免與現有的名稱衝突。 舉例來說,如果群組是「foobar」,前置字串是「gid-」,則群組名稱會變成「gid-foobar」。 | 字串 |
issuerURI | 是 | 會將授權要求傳送給 OpenID 的網址,例如 https://example.com/adfs 。Kubernetes API 伺服器會使用這個網址,探索用於驗證權杖的公開金鑰。URI 必須使用 HTTPS。 |
網址字串 |
kubectlRedirectURI | 是 | 用於授權的重新導向網址「kubectl」。 | 網址字串 |
範圍 | 是 | 要傳送給 OpenID 供應商的其他範圍。Microsoft Azure 和 Okta
需要 offline_access 範圍。 |
以半形逗號分隔的清單 |
userClaim | 否 | 用來當做使用者名稱的 JWT 憑證附加資訊。預設值為 `sub`,這應該是終端使用者的專屬 ID。視 OpenID 供應商而定,您可以選擇其他憑證附加資訊,例如電子郵件地址或姓名。不過,電子郵件地址以外的憑證附加資訊都必須在前方加上核發者網址,以免發生命名衝突。 | 字串 |
userPrefix | 否 | 在使用者名稱憑證附加資訊的前方加上此字串,可避免與現有的名稱衝突。
如未提供這個欄位,且使用者名稱不是電子郵件地址,前置字元預設為 issuerurl# 。將 userPrefix 設為 - 時,前置字元會停用。 | 字串 |