本主題說明 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
這個物件包含叢集控制層的常見參數。
| 名稱 | 說明 | 類型 | 範例 | 必填 | 
|---|---|---|---|---|
| 版本 | 控制層的 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設為-時,前置字元會停用。 | 字串 |