クラスタ構成ファイルを作成するには、以前の展開の既存の構成ファイルを Amazon Web Services (AWS) にコピーして更新します。また、空のテンプレートを使用してファイルを最初から作成することもできます。
重要Tanzu Kubernetes Grid v2.4.x は、AWS でのスタンドアローン TKG 管理クラスタの作成をサポートする TKG の最後のバージョンです。AWS でスタンドアローン TKG 管理クラスタを作成する機能は、Tanzu Kubernetes Grid v2.5 リリースで削除される予定です。
以降、VMware では、AWS で新しい TKG 管理クラスタを作成する代わりに、Tanzu Mission Control を使用してネイティブの AWS EKS クラスタを作成することをお勧めします。Tanzu Mission Control を使用してネイティブの AWS EKS クラスタを作成する方法については、Tanzu Mission Control ドキュメントの「AWS EKS クラスタのライフサイクルの管理」を参照してください。
詳細については、『VMware Tanzu Kubernetes Grid v2.4 Release Notes』の「AWS および Azure での TKG 管理クラスタとワークロード クラスタの廃止」を参照してください。
次に示すテンプレートには、AWS への管理クラスタの展開に関連するすべてのオプションが含まれています。このテンプレートをコピーして使用し、管理クラスタを AWS に展開できます。
すべてのターゲット プラットフォームに共通の設定を更新する方法については、「管理クラスタ構成ファイルの作成」を参照してください。
すべての構成ファイル変数の詳細については、「Tanzu CLI 構成ファイル変数リファレンス」を参照してください。
vSphere 設定の構成方法の例については、テンプレートの下にあるセクションを参照してください。
必須オプションはコメント解除されています。オプションの設定はコメントアウトされています。必要に応じて、デフォルト値が含まれています。
#! ---------------------------------------------------------------------
#! Basic cluster creation configuration
#! ---------------------------------------------------------------------
CLUSTER_NAME:
CLUSTER_PLAN: dev
INFRASTRUCTURE_PROVIDER: aws
# CLUSTER_API_SERVER_PORT:
ENABLE_CEIP_PARTICIPATION: true
ENABLE_AUDIT_LOGGING: true
CLUSTER_CIDR: 100.96.0.0/11
SERVICE_CIDR: 100.64.0.0/13
# CAPBK_BOOTSTRAP_TOKEN_TTL: 30m
#! ---------------------------------------------------------------------
#! Node configuration
#! AWS-only MACHINE_TYPE settings override cloud-agnostic SIZE settings.
#! ---------------------------------------------------------------------
# SIZE:
# CONTROLPLANE_SIZE:
# WORKER_SIZE:
CONTROL_PLANE_MACHINE_TYPE: t3.large
NODE_MACHINE_TYPE: m5.large
# OS_NAME: ""
# OS_VERSION: ""
# OS_ARCH: ""
#! ---------------------------------------------------------------------
#! AWS configuration
#! ---------------------------------------------------------------------
AWS_REGION:
AWS_NODE_AZ: ""
AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
AWS_SSH_KEY_NAME:
BASTION_HOST_ENABLED: true
# AWS_NODE_AZ_1: ""
# AWS_NODE_AZ_2: ""
# AWS_VPC_ID: ""
# AWS_PRIVATE_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID: ""
# AWS_PUBLIC_SUBNET_ID_1: ""
# AWS_PRIVATE_SUBNET_ID_1: ""
# AWS_PUBLIC_SUBNET_ID_2: ""
# AWS_PRIVATE_SUBNET_ID_2: ""
# AWS_PRIVATE_NODE_CIDR: 10.0.0.0/24
# AWS_PUBLIC_NODE_CIDR: 10.0.1.0/24
# AWS_PRIVATE_NODE_CIDR_1: 10.0.2.0/24
# AWS_PUBLIC_NODE_CIDR_1: 10.0.3.0/24
# AWS_PRIVATE_NODE_CIDR_2: 10.0.4.0/24
# AWS_PUBLIC_NODE_CIDR_2: 10.0.5.0/24
# AWS_SECURITY_GROUP_BASTION: sg-12345
# AWS_SECURITY_GROUP_CONTROLPLANE: sg-12346
# AWS_SECURITY_GROUP_APISERVER_LB: sg-12347
# AWS_SECURITY_GROUP_NODE: sg-12348
# AWS_SECURITY_GROUP_LB: sg-12349
# DISABLE_TMC_CLOUD_PERMISSIONS: false # Deactivates IAM permissions required for TMC enablement
#! ---------------------------------------------------------------------
#! Image repository configuration
#! ---------------------------------------------------------------------
# TKG_CUSTOM_IMAGE_REPOSITORY: ""
# TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE: ""
#! ---------------------------------------------------------------------
#! Proxy configuration
#! ---------------------------------------------------------------------
# TKG_HTTP_PROXY: ""
# TKG_HTTPS_PROXY: ""
# TKG_NO_PROXY: ""
#! ---------------------------------------------------------------------
#! Machine Health Check configuration
#! ---------------------------------------------------------------------
ENABLE_MHC:
ENABLE_MHC_CONTROL_PLANE: true
ENABLE_MHC_WORKER_NODE: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m
#! ---------------------------------------------------------------------
#! Identity management configuration
#! ---------------------------------------------------------------------
IDENTITY_MANAGEMENT_TYPE: "none"
#! Settings for IDENTITY_MANAGEMENT_TYPE: "oidc"
# CERT_DURATION: 2160h
# CERT_RENEW_BEFORE: 360h
# OIDC_IDENTITY_PROVIDER_CLIENT_ID:
# OIDC_IDENTITY_PROVIDER_CLIENT_SECRET:
# OIDC_IDENTITY_PROVIDER_GROUPS_CLAIM: groups
# OIDC_IDENTITY_PROVIDER_ISSUER_URL:
# OIDC_IDENTITY_PROVIDER_SCOPES: "email,profile,groups,offline_access"
# OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM: email
#! The following two variables are used to configure Pinniped JWTAuthenticator for workload clusters
# SUPERVISOR_ISSUER_URL:
# SUPERVISOR_ISSUER_CA_BUNDLE_DATA:
#! Settings for IDENTITY_MANAGEMENT_TYPE: "ldap"
# LDAP_BIND_DN:
# LDAP_BIND_PASSWORD:
# LDAP_HOST:
# LDAP_USER_SEARCH_BASE_DN:
# LDAP_USER_SEARCH_FILTER:
# LDAP_USER_SEARCH_ID_ATTRIBUTE: dn
# LDAP_USER_SEARCH_NAME_ATTRIBUTE:
# LDAP_GROUP_SEARCH_BASE_DN:
# LDAP_GROUP_SEARCH_FILTER:
# LDAP_GROUP_SEARCH_NAME_ATTRIBUTE: dn
# LDAP_GROUP_SEARCH_USER_ATTRIBUTE: dn
# LDAP_ROOT_CA_DATA_B64:
#! ---------------------------------------------------------------------
#! Antrea CNI configuration
#! ---------------------------------------------------------------------
# ANTREA_NO_SNAT: true
# ANTREA_NODEPORTLOCAL: true
# ANTREA_NODEPORTLOCAL_ENABLED: true
# ANTREA_NODEPORTLOCAL_PORTRANGE: 61000-62000
# ANTREA_TRAFFIC_ENCAP_MODE: "encap"
# ANTREA_PROXY: true
# ANTREA_PROXY_ALL: true
# ANTREA_PROXY_LOAD_BALANCER_IPS: false
# ANTREA_PROXY_NODEPORT_ADDRS:
# ANTREA_PROXY_SKIP_SERVICES: ""
# ANTREA_POLICY: true
# ANTREA_TRACEFLOW: true
# ANTREA_DISABLE_UDP_TUNNEL_OFFLOAD: false
# ANTREA_ENABLE_USAGE_REPORTING: false
# ANTREA_EGRESS: true
# ANTREA_EGRESS_EXCEPT_CIDRS: ""
# ANTREA_FLOWEXPORTER: false
# ANTREA_FLOWEXPORTER_COLLECTOR_ADDRESS: "flow-aggregator.flow-aggregator.svc:4739:tls"
# ANTREA_FLOWEXPORTER_POLL_INTERVAL: "5s"
# ANTREA_FLOWEXPORTER_ACTIVE_TIMEOUT: "5s"
# ANTREA_FLOWEXPORTER_IDLE_TIMEOUT: "15s"
# ANTREA_IPAM: false
# ANTREA_KUBE_APISERVER_OVERRIDE: ""
# ANTREA_MULTICAST: false
# ANTREA_MULTICAST_INTERFACES: ""
# ANTREA_NETWORKPOLICY_STATS: true
# ANTREA_SERVICE_EXTERNALIP: true
# ANTREA_TRANSPORT_INTERFACE: ""
# ANTREA_TRANSPORT_INTERFACE_CIDRS: ""
AWS アカウント、およびクラスタを展開するリージョンとアベイラビリティ ゾーンに関する情報を提供するには、次のいずれかを実行します。
(推奨)AWS CLI を使用して AWS 認証情報プロファイルを構成し、ブートストラップ マシンのプロファイル名に AWS_PROFILE
環境変数を設定します。
アカウントの認証情報とその他の情報をクラスタ構成ファイルに含めます。例:
AWS_REGION: eu-west-1
AWS_NODE_AZ: "eu-west-1a"
# Only use AWS_PROFILE OR combination of AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, but not both.
AWS_PROFILE: tkg
# AWS_ACCESS_KEY_ID: <encoded:QUtJQVQ[...]SU82TTM=>
# AWS_SECRET_ACCESS_KEY: <encoded:eGN4RHJmLzZ[...]SR08yY2ticQ==>
AWS_SSH_KEY_NAME: default
BASTION_HOST_ENABLED: true
AWS_PROFILE
、または AWS_ACCESS_KEY_ID
と AWS_SECRET_ACCESS_KEY
の組み合わせのみを使用します。両方を使用することはできません。AWS_ACCESS_KEY_ID
と AWS_SECRET_ACCESS_KEY
の値は Base64 でエンコードする必要があります。デフォルトでは、Tanzu Kubernetes Grid on AWS は、管理クラスタの Kubernetes API サーバ用に公開ロード バランサを作成します。
エアギャップ環境やプロキシ環境などのインターネットが制限されている環境では、クラスタ構成ファイルで AWS_LOAD_BALANCER_SCHEME_INTERNAL
を true
に設定することで、公開ロード バランサの作成を回避できます。
AWS_LOAD_BALANCER_SCHEME_INTERNAL: true
この設定は、内部スキームを使用するように管理クラスタのロード バランサをカスタマイズします。つまり、Kubernetes API サーバにアクセスしてインターネット経由でルーティングすることはできません。
Tanzu CLI は、構成ファイルで指定した設定に従って、ワークロード クラスタの個々のノードを作成します。AWS では、すべてのノード仮想マシンに同じ事前定義済み構成を適用することも、制御プレーン ノードとワーカー ノードにそれぞれ異なる事前定義済み構成を設定することもできます。これらの設定を使用すると、管理クラスタ ノードにそれぞれ異なる構成のノードを持つ Tanzu Kubernetes クラスタを作成できます。また、制御プレーン ノードとワーカー ノードの構成が異なるクラスタを作成することもできます。
管理クラスタを作成すると、ノード マシンのインスタンス タイプが CONTROL_PLANE_MACHINE_TYPE
および NODE_MACHINE_TYPE
オプションで設定されます。デフォルトでは、これらの設定はワークロード クラスタにも使用されます。最小構成は、2 個の CPU と 8 GB のメモリです。互換性のあるインスタンス タイプのリストは、リージョンによって異なります。
CONTROL_PLANE_MACHINE_TYPE: "t3.large"
NODE_MACHINE_TYPE: "m5.large"
これらの設定は、SIZE
、CONTROLPLANE_SIZE
、および WORKER_SIZE
オプションを使用してオーバーライドできます。すべての制御プレーンおよびワーカー ノードの仮想マシンのサイズが同じ Tanzu Kubernetes クラスタを作成するには、SIZE
変数を指定します。SIZE
変数を設定すると、設定した構成を使用してすべてのノードが作成されます。Amazon EC2 のノード インスタンスのさまざまなサイズの構成については、「Amazon EC2 Instance Types」を参照してください。
SIZE: "t3.large"
制御プレーンおよびワーカー ノードの仮想マシンのサイズが異なるワークロード クラスタを作成するには、CONTROLPLANE_SIZE
および WORKER_SIZE
オプションを指定します。
CONTROLPLANE_SIZE: "t3.large"
WORKER_SIZE: "m5.xlarge"
CONTROLPLANE_SIZE
オプションと WORKER_SIZE
オプションを SIZE
オプションと組み合わせることができます。たとえば、SIZE: "t3.large"
と WORKER_SIZE: "m5.xlarge"
を指定すると、制御プレーン ノードは t3.large
に設定され、ワーカー ノードは m5.xlarge
に設定されます。
SIZE: "t3.large"
WORKER_SIZE: "m5.xlarge"
次の行をコメント解除して更新し、スタンドアローン管理クラスタをホストし、スタンドアローン管理クラスタによって使用される VPC およびその他の AWS インフラストラクチャを指定します。
AWS_REGION:
AWS_NODE_AZ:
AWS_PRIVATE_SUBNET_ID:
AWS_PUBLIC_SUBNET_ID:
AWS_SSH_KEY_NAME:
AWS_VPC_ID:
BASTION_HOST_ENABLED:
CONTROL_PLANE_MACHINE_TYPE:
NODE_MACHINE_TYPE:
SERVICE_CIDR:
CLUSTER_CIDR:
本番用の管理クラスタを展開する場合は、次の行もコメント解除し、追加の 2 つの制御プレーン ノードを指定します。
AWS_NODE_AZ_1:
AWS_NODE_AZ_2:
AWS_PRIVATE_SUBNET_ID_1:
AWS_PRIVATE_SUBNET_ID_2:
AWS_PUBLIC_SUBNET_ID_1:
AWS_PUBLIC_SUBNET_ID_2:
たとえば、既存の VPC 上の本番用の管理クラスタの構成は次のようになります。
AWS_REGION: us-west-2
AWS_NODE_AZ: us-west-2a
AWS_NODE_AZ_1: us-west-2b
AWS_NODE_AZ_2: us-west-2c
AWS_PRIVATE_SUBNET_ID: subnet-ID
AWS_PRIVATE_SUBNET_ID_1: subnet-ID
AWS_PRIVATE_SUBNET_ID_2: subnet-ID
AWS_PUBLIC_SUBNET_ID: subnet-ID
AWS_PUBLIC_SUBNET_ID_1: subnet-ID
AWS_PUBLIC_SUBNET_ID_2: subnet-ID
AWS_SSH_KEY_NAME: tkg
AWS_VPC_ID: vpc-ID
BASTION_HOST_ENABLED: "true"
CONTROL_PLANE_MACHINE_TYPE: m5.large
NODE_MACHINE_TYPE: m5.large
SERVICE_CIDR: 100.64.0.0/13
CLUSTER_CIDR: 100.96.0.0/11
デフォルトでは、Tanzu Kubernetes Grid は制御プレーン、ワーカー ノード、およびロード バランサを接続するための新しいセキュリティ グループを作成します。カスタム ルールが必要な場合は、セキュリティ グループを事前にプロビジョニングし、ルールセットを追加し、次に説明するように、カスタム セキュリティ グループを使用するようにクラスタを構成できます。
デフォルトでは、Tanzu Kubernetes Grid は VPC 内に 5 つのセキュリティ グループを作成します。
Tanzu Kubernetes Grid が新しいセキュリティ グループを作成するのを防ぎ、代わりにカスタム ルールセットで事前プロビジョニングされた既存のセキュリティ グループを使用するには、次の手順を実行します。
AWS_SECURITY_GROUP_*
変数をセキュリティ グループ名に設定して、クラスタ構成ファイルでカスタム セキュリティ グループを指定します。例:
AWS_SECURITY_GROUP_BASTION: sg-12345
5 つのセキュリティ グループ、それらのデフォルト ルール、および対応するクラスタ構成変数を次に示します。
グループ: CLUSTER-NAME-bastion
クラスタ構成変数 AWS_SECURITY_GROUP_BASTION
を使用して設定します。
ルール:
説明 | プロトコル | 元のポート | 先のポート | 入力を許可 | 必須 |
---|---|---|---|---|---|
SSH | TCP | 22 | 22 | 0.0.0.0/0 | いいえ |
グループ: CLUSTER-NAME-node
クラスタ構成変数 AWS_SECURITY_GROUP_NODE
を使用して設定します。
ルール:
説明 | プロトコル | 元のポート | 先のポート | 入力を許可 | 必須 |
---|---|---|---|---|---|
SSH | TCP | 22 | 22 | セキュリティ グループ <cluster-name>-bastion | いいえ |
ノード ポート サービス | TCP | 30000 | 32767 | 0.0.0.0/0 | いいえ(以下の注を参照) |
Kubelet API | TCP | 10250 | 10250 | セキュリティ グループ <cluster-name>-controlplane および <cluster-name>-node | はい |
Antrea CNI | TCP | 10349-10351 | 10349-10351 | セキュリティ グループ <cluster-name>-node | はい |
GENEVE | UDP | 6081 | 6081 | セキュリティ グループ <cluster-name>-node | はい |
注0.0.0.0/0 は、VPC 内、ピアリングされた VPC、および VPN または DirectConnect 経由で接続されたネットワークからのみの受信です。0.0.0.0/0 は、インターネットにアクセス可能であると解釈しないでください。管理者であれば、ノード ポート サービスのポート範囲と入力方向ルールの両方を変更でき、クラスタの機能には使用されません。
グループ: CLUSTER-NAME-controlplane
クラスタ構成変数 AWS_SECURITY_GROUP_CONTROLPLANE
を使用して設定します。
ルール:
説明 | プロトコル | 元のポート | 先のポート | 入力を許可 | 必須 |
---|---|---|---|---|---|
SSH | TCP | 22 | 22 | セキュリティ グループ <cluster-name>-bastion | いいえ |
Kubernetes API | TCP | 6443* | 6443* | セキュリティ グループ <cluster-name>-apiserver-lb、<cluster-name>-apiserver-controlplane、および <cluster-name>-apiserver-node | はい |
etcd | TCP | 2379 | 2379 | セキュリティ グループ <cluster-name>-controlplane | はい |
etcd peer | TCP | 2380 | 2380 | セキュリティ グループ <cluster-name>-controlplane | はい |
addons-manager | TCP | 9865 | 9865 | セキュリティ グループ <cluster-name>-controlplane | はい |
kapp-controller | TCP | 10100 | 10100 | セキュリティ グループ <cluster-name>-controlplane | はい |
* CLUSTER_API_SERVER_PORT
を設定した場合は 6443
を変数に設定したポート番号に置き換えます。
グループ: CLUSTER-NAME-apiserver-lb
クラスタ構成変数 AWS_SECURITY_GROUP_APISERVER_LB
を使用して設定します。
ルール:
説明 | プロトコル | 元のポート | 先のポート | 入力を許可 | 必須 |
---|---|---|---|---|---|
Kubernetes API | TCP | 6443* | 6443* | 0.0.0.0/0 | いいえ(以下の注を参照) |
* CLUSTER_API_SERVER_PORT
を設定した場合は 6443
を変数に設定したポート番号に置き換えます。
注ロード バランサを内部でプロビジョニングするように指定されていない場合、デフォルトでは 0.0.0.0/0 ルールはインターネットにアクセスできます。ロード バランサが内部の場合は、管理クラスタ(ワークロード クラスタの場合)またはブートストラップ マシン(管理クラスタの場合)からアクセスできる必要があります。このルールはロックダウンできますが、その場合は、次のルールを追加する必要があります。
説明 | プロトコル | 元のポート | 先のポート | 入力を許可 | 必須 |
---|---|---|---|---|---|
クラスタ内の Kubernetes API | TCP | 6443* | 6443* | セキュリティ グループ <cluster-name>-controlplane および <cluster-name>-node | はい |
* CLUSTER_API_SERVER_PORT
を設定した場合は 6443
を変数に設定したポート番号に置き換えます。
グループ: CLUSTER-NAME-lb
クラスタ構成変数 AWS_SECURITY_GROUP_LB
を使用して設定します。
このセキュリティ グループは、ワークロード ロード バランサに使用されます。このセキュリティ グループにはルールが追加されません。AWS 管理者が、アプリケーション ワークロード用に必要に応じてルールセットをカスタマイズすることが想定されます。
管理クラスタ構成ファイルの更新が完了したら、「構成ファイルからの管理クラスタの展開」の手順に従って管理クラスタを作成します。