このトピックでは、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 アドレスの範囲。現時点では 1 つの範囲のみがサポートされています。この範囲は、ネットワークから到達可能なサブネットと重複してはなりません。複数の異なる AWSCluster オブジェクト間では、同じ範囲を使用できます。 | list(string) |
[10.1.0.0/16] |
○ |
serviceAddressCIDRBlocks | クラスタの Service で使用される IPv4 アドレスの範囲。現時点では 1 つの範囲のみがサポートされています。この範囲は、ネットワークから到達可能なサブネットと重複してはなりません。複数の異なる 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 | コントロール プレーン レプリカの 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 がクラスタ内のアプリケーション レイヤ シークレットを暗号化するために使用する AWS KMS 鍵の Amazon Resource Name(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} | × |
tags | AWSCluster をサポートする各 AWS リソースに割り当てられる Key-Value メタデータ。詳細については、Tagging Best Practices をご覧ください。 | map(string) |
{Environment: Production, Team: Analytics} | × |
proxySecretName | ユーザーがクラスタ固有のネットワーク プロキシの定義で選択した Secret の名前 | 文字列 | proxy-secret-0 | × |
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.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 | × | 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 の認証で認可サーバーが同意を求めるプロンプトを表示する場合は、 |
カンマ区切りのリスト |
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 を - に設定すると、接頭辞は無効になります。 | 文字列 |