AWS の Anthos クラスタ(GKE on AWS)の新しいバージョンが 3 月 31 日にリリースされました。詳細については、リリースノートをご覧ください。

AWSCluster

このトピックでは、AWSCluster カスタム リソース定義の構成オプションについて説明します。

AWSCluster の定義

AWSCluster は、Anthos clusters on AWS によって定義されている Kubernetes カスタム リソースです。このリソースは、Anthos clusters 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.19.8-gke.1000
    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
    tags:
      TAG_KEY: TAG_VALUE
    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 アドレスの範囲。現時点では 1 つの範囲のみがサポートされています。この範囲は、ネットワークから到達可能なサブネットと重複してはなりません。複数の異なる AWSCluster オブジェクト間では、同じ範囲を使用できます。 list(string) [10.1.0.0/16]
serviceAddressCIDRBlocks クラスタの Service で使用される IPv4 アドレスの範囲。現時点では 1 つの範囲のみがサポートされています。この範囲は、ネットワークから到達可能なサブネットと重複してはなりません。複数の異なる AWSCluster オブジェクト間では、同じ範囲を使用できます。 list(string) [10.2.0.0/16]
serviceLoadBalancerSubnetIDs Anthos clusters on AWS でパブリック ロードバランサまたはプライベート ロードバランサを作成できるサブネット ID。Anthos clusters on AWS では、各サブネットにタグを適用して負荷分散をサポートします。ALB をサポートするには、複数のサブネットを指定する必要があります。 list(string) [subnet-abcdefg, subnet-12345678]

spec.controlPlane

このオブジェクトには、クラスタのコントロール プレーンの共通パラメータが含まれます。

名前 説明 必須
version コントロール プレーンの GKE バージョン。詳細については、バージョニングとアップグレードユーザー クラスタのアップグレードをご覧ください。 string 1.19.8-gke.1000
instanceType 各コントロール プレーン レプリカの AWS EC2 インスタンス タイプ。サポートされているインスタンス タイプをご覧ください。 string t3.medium
keyName 各コントロール プレーン レプリカに割り当てられる AWS EC2 鍵ペア。 string my-key-pair
subnetIDs コントロール プレーン レプリカの VPC サブネットのリスト。 list(string) [subnet-06a004869a1eae947]
securityGroupIDs Anthos clusters on AWS では、有効なクラスタに必要な最小限のルールを持つセキュリティ グループを自動的に作成します。コントロール プレーンのレプリカにアクセスできるセキュリティ グループを追加する場合は、その ID を securityGroupIDs に追加します。 list(string) [sg-0ec06559d997a796f] ×
iamInstanceProfile コントロール プレーンのレプリカに割り当てられた AWS EC2 インスタンス プロファイルの名前。 string my-control-plane-profile
databaseEncryption.kmsKeyARN Anthos clusters 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
tags AWSCluster をサポートする各 AWS リソースに割り当てられる Key-Value メタデータ。詳細については、Tagging Best Practices をご覧ください。 map(string) {Environment: Production, Team: Analytics} ×
workloadIdentity ワークロード ID 構成用の Cloud Storage バケット。単一のフィールド 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 × Base64 でエンコードされた OIDC プロバイダの PEM エンコード証明書。文字列を作成するには、ヘッダーを含めた証明書を base64 でエンコードします。結果の文字列は certificateAuthorityData に 1 行で含めます。例: certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== 文字列
clientID OpenID プロバイダへの認証リクエストを行うクライアント アプリケーションの ID。 文字列
clientSecret × OIDC クライアント アプリケーションと OIDC プロバイダ間の共有シークレット。 文字列
extraParams × OpenID プロバイダに送信する追加の Key-Value パラメータ。グループを承認する場合は、resource=token-groups-claim を渡します。

Microsoft Azure と Okta の認証で認可サーバーが同意を求めるプロンプトを表示する場合は、extraParamsprompt=consent に設定します。Google Cloud Identity の場合は、extraParamsprompt=consent,access_type=offline に設定します。

カンマ区切りのリスト
groupsClaim × プロバイダがセキュリティ グループを返すために使用する JWT クレーム。 文字列
groupPrefix × 既存の名前と競合しないように、グループ クレームの先頭に付加される接頭辞。たとえば、グループ foobar と接頭辞 gid- が指定されている場合、gid-foobar となります。 文字列
issuerURI 認可リクエストが OpenID に送信される URL(https://example.com/adfs など)。Kubernetes API サーバーは、この URL を使用してトークン検証用の公開鍵を検出します。URI には HTTPS を使用する必要があります。 URL 文字列
kubectlRedirectURI 「kubectl」が認可に使用するリダイレクト URL。 URL 文字列
scopes OpenID プロバイダに送信する追加のスコープ。Microsoft Azure と Okta には offline_access スコープが必要です。 カンマ区切りのリスト
userClaim × ユーザー名として使用する JWT クレーム。デフォルトは「sub」です。これはエンドユーザーの一意の識別子である必要があります。OpenID プロバイダによっては、email や name などの他のクレームを選択できます。ただし、名前が競合しないように、email 以外のクレームには発行者の URL が先頭に付加されます。 文字列
userPrefix × 既存の名前と競合しないように、ユーザー名のクレームの先頭に付加される接頭辞。このフィールドを指定せず、ユーザー名がメールアドレス以外の値である場合、接頭辞はデフォルトの issuerurl# になります。userPrefix- に設定すると、接頭辞は無効になります。文字列