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 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.rootVolumespec.etcd.mainVolume

名稱 說明 類型 範例 必填
sizeGiB 根磁碟區大小 (以 GB 為單位)。 integer 10
volumeType 控制層節點的 AWS EBS 磁碟區類型。可以是 gp2 (預設) 或 gp3 string gp2
iops 磁碟區每秒佈建的 IO 作業數 (IOPS)。只有在 volumeTypeGP3 時才有效。詳情請參閱「通用 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

如果授權伺服器提示您同意,請將 extraParams 設為 prompt=consent,以便透過 Microsoft Azure 和 Okta 進行驗證。如果是 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」。 網址字串
範圍 要傳送給 OpenID 供應商的其他範圍。Microsoft Azure 和 Okta 需要 offline_access 範圍。 以半形逗號分隔的清單
userClaim 用來當做使用者名稱的 JWT 憑證附加資訊。預設值為 `sub`,這應該是終端使用者的專屬 ID。視 OpenID 供應商而定,您可以選擇其他憑證附加資訊,例如電子郵件地址或姓名。不過,電子郵件地址以外的憑證附加資訊都必須在前方加上核發者網址,以免發生命名衝突。 字串
userPrefix 在使用者名稱憑證附加資訊的前方加上此字串,可避免與現有的名稱衝突。 如未提供這個欄位,且使用者名稱不是電子郵件地址,前置字元預設為 issuerurl#。將 userPrefix 設為 - 時,前置字元會停用。字串