クラスタ v1beta1 API を使用すると、デフォルトの ClusterClass 定義に基づいてクラスタをプロビジョニングできます。
ClusterClass API v1beta1
Kubernetesクラスタ APIは、Kubernetes クラスタの宣言型プロビジョニング、アップグレード、および運用を提供するツールのスイートです。ClusterClassは、一連のクラスタのライフサイクルを管理するためのテンプレートを定義できる、先進的なクラスタ API です。TKG サービス では、v1beta1 API の使用によって ClusterClass がサポートされます。
TKG サービス には、tanzukubernetescluster
という名前のデフォルトの ClusterClass 定義が付属しています。tanzukubernetescluster
ClusterClass では、v1beta API を使用してクラスタを作成するためのテンプレートが提供されます。tanzukubernetescluster
ClusterClass は、すべてのユーザー名前空間で使用できます。この ClusterClass に基づいてクラスタを作成するには、クラスタ仕様で参照します。手順については、v1beta の例を参照してください。
デフォルトの ClusterClass「tanzukubernerescluster」
デフォルトの tanzukubernetescluster
ClusterClass は変更できません。TKG サービスの各リリースで更新される可能性があります。
TKG サービス インスタンスが付属するデフォルトの tanzukubernetescluster
ClusterClass を表示するには、次の手順を実行します。
- スーパーバイザー にログインします。
kubectl vsphere login --server=IP-or-FQDN --vsphere-username [email protected]
- TKGS クラスタがプロビジョニングされている vSphere 名前空間 にコンテキストを切り替えます。
kubeclt config use-context VSPEHRE-NS
- デフォルトの
tanzukubernetescluster
ClusterClass を取得します。kubectl get clusterclass tanzukubernetescluster -o yaml
- 必要に応じて、デフォルトの ClusterClass の出力を tkc-dcc.yaml という名前のファイルに書き込むことができます。
kubectl get clusterclass tanzukubernetescluster -o yaml > tkc-dcc.yaml
クラスタをカスタマイズするための ClusterClass 変数
変数を使用して、tanzukubernetescluster
ClusterClass に基づいてクラスタをカスタマイズします。変数は、名前と値のペアを使用して定義されます。構文は、openAPIV3Schemaに準拠している必要があります。
- 仮想マシン クラス
- ストレージ クラス
- プロキシ
- TLS 証明書
- SSH キー
以下セクションに、デフォルトの tanzukubernetescluster
ClusterClass で使用できるすべての変数を示します。
key-name
など)、アンダースコア(
KEY_NAME
など)、ドット(
key.name
など)のみで構成する必要があります。キー名にスペースを使用することはできません。
clusterEncryptionConfigYaml
clusterEncryptionConfigYaml
変数は、クラスタの暗号化を構成する場合に使用します。
- clusterEncryptionConfigYaml
- 暗号化構成の詳細を提供する YAML ファイルである文字列。
controlPlaneCertificateRotation
controlPlaneCertificateRotation
変数は、制御プレーン ノードの TLS 証明書が期限切れになる前にそれらの証明書のロールアウトをトリガすることで、証明書をローテーションするようにシステムを構成する場合に使用します。新規と既存のすべての制御プレーン ノードで、制御プレーン証明書のローテーションを使用できます。
- controlPlaneCertificateRotation
-
機能を有効にするかどうかを示すブール値および証明書のローテーションの期限切れまでの日数。詳細については、「
Automatically rotating certificates using Kubeadm Control Plane provider」を参照してください。
... variables: - name: controlPlaneCertificateRotation value: activate: true daysBefore: 90
controlPlaneVolumes
controlPlaneVolumes
変数は、制御プレーン ノードのパーシステント ボリュームを構成する場合に使用します。
- controlPlaneVolumes
-
オブジェクトのオプションの配列。それぞれに
name
、storageClass
、およびmountPath
が含まれ、それぞれが文字列であり、およびオプションのstorage
文字列が含まれるcapacity
オブジェクトです。... variables: #controlPlaneVolumes is an optional set of PVCs to create and #attach to each node - name: controlPlaneVolumes value: #name of the PVC to be used as the suffix (node.name) - name: NAME #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /dir/path #storageClass is the storage class to use for the PVC storageClass: tkgs-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
defaultRegistrySecret
defaultRegistrySecret
変数は、クラスタのデフォルトのコンテナ レジストリを構成します。
- defaultRegistrySecret
- デフォルトのコンテナ レジストリのパブリック キー、証明書名、および名前空間を含むオブジェクト。
defaultStorageClass
defaultStorageClass
変数は、クラスタのデフォルト ストレージ クラスを構成する場合に使用します。
- defaultStorageClass
-
デフォルトのストレージ クラスとして使用するストレージ クラスを特定する文字列。Helm チャートや Tanzu パッケージなどの特定のアプリケーションで必要になることがあります。
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
extensionCert
変数は、TLS 証明書を構成する場合に使用します。
- extensionCert
-
name
文字列とkey
文字列を含むcontentSecret
オブジェクトを含むオブジェクト。contentSecret
は、TLS 証明書用に作成された Kubernetes シークレット オブジェクトを参照します。... variables: #extensionCert specifies the cert and key for Extensions Controller #self-signed issuer and certificates must be created in advance - name: extensionCert value: contentSecret: #name specifies the name of secret name: string #key specifies the content of tls\.crt in the secret's data map key: string
kubeAPIServerFQDNs
kubeAPIServerFQDNs
変数は、FQDN を使用してクラスタを構成する場合に使用します。
nodePoolLabels
nodePoolLabels
変数は、ワーカー ノードのラベルを構成する場合に使用します。
- nodePoolLabels
- 1 つ以上のオブジェクトの配列。各オブジェクトにはキーと値のペア(両方とも文字列)が含まれています。
nodePoolTaints
nodePoolTaints
変数は、テイントをワーカー ノードに適用する場合に使用します。
- nodePoolTaints
- オブジェクトの配列。各オブジェクトには、ワーカーノードに適用される テイントが含まれています。
nodePoolVolumes
nodePoolVolumes
変数は、クラスタ ノードのパーシステント ボリュームを指定する場合に使用します。
- nodePoolVolumes
-
オブジェクトのオプションの配列。それぞれに
name
、storageClass
、およびmountPath
が含まれ、それぞれが文字列であり、オプションのstorage
文字列が含まれるcapacity
オブジェクトです。... variables: #nodePoolVolumes is an optional set of PVCs to create and #attach to each node; use for high-churn components like containerd - name: nodePoolVolumes value: | #name of the PVC to be used as the suffix (node.name) - name: etcd #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /var/lib/containerd #storageClass is the storage class to use for the PVC storageClass: tkgs-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
ntp
ntp
変数は、クラスタの NTP サーバを構成する場合に使用します。
- ntp
- NTP サーバの FQDN または IP アドレスを表す文字列。
podSecurityStandard
podSecurityStandard
変数は、クラスタ全体のポッド セキュリティを構成する場合に使用します。
- podSecurityStandard
-
TKr v1.26 以降では、注釈ラベルを使用して名前空間レベルでポッド セキュリティ (PSA) の制限がデフォルトで適用されます。TKR 1.25 以降の PSA の構成を参照してください。
podSecurityStandard
変数を使用して、v1beta1 クラスタをプロビジョニングまたは更新するときにクラスタ全体の PSA を構成することもできます。podSecurityStandard
変数は次のように実装できます。... variables: - name: podSecurityStandard value: deactivated: DEACTIVATED audit: AUDIT-PROFILE enforce: ENFORCE-PROFILE warn: WARN-PROFILE auditVersion: AUDIT-VERSION enforceVersion: ENFORCE-VERSION warnVersion: WARN-VERSION exemptions: namespaces: [EXEMPT-NS]
ここで、- DEACTIVATED 値は、クラスタ全体の PSA を適用する場合は
false
(デフォルト)、それ以外の場合はtrue
です。 - *-PROFILE 値は、各モードの PSA プロファイルです。
"privileged"
、"baseline"
、または"restricted"
(デフォルト)を指定できます。 - *-VERSION 値は、各モードの Kubernetes バージョン(例:
"v1.26"
)です。値"latest"
がデフォルトです。 - EXEMPT-NS 値は、PSA 制御から除外する名前空間のカンマ区切りのリストです。
注: システム名前空間は、kube-system、tkg-system、vmware-system-cloud-provider などのポッド セキュリティから除外されます。podSecurityStandard
変数を実装しない場合は、デフォルトの PSA の動作が保持されます。クラスタ仕様にpodSecurityStandard
変数を含めると、変数の設定が(オーバーライドしない限りデフォルトも含めて)制御されます。次の例では、デフォルトが表示されます。... variables: - name: podSecurityStandard value: enforce: "restricted" enforce-version: "latest"
次の例では、現在のポッド セキュリティ強化のベスト プラクティスに従っていないワークロードを特定するための監査ログと警告を提供しますが、既知の権限の昇格を許可しない最小限の制限があるポリシー(「ベースライン」)のみを適用します。... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "baseline"
次の例では、特定の名前空間を除き、制限付きポリシーを適用します。... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "restricted" exemptions: namesaces: ["privileged-workload-ns"]
次の例では、特定の TKr バージョンへの適用を制限します。... variables: - name: podSecurityStandard value: audit-version: "v1.26" warn-version: "v1.26" enforce-version: "v1.26"
その他の例については、Kubernetes ドキュメントのポッド セキュリティ標準を参照してください。
- DEACTIVATED 値は、クラスタ全体の PSA を適用する場合は
proxy
proxy
変数は、クラスタのプロキシ サーバを構成する場合に使用します。
- proxy
- 送信クラスタ接続のプロキシ サーバを参照するパラメータを持つオブジェクト。
storageClass
storageClass
変数は、クラスタのストレージ クラスを構成する場合に使用します。
- storageClass
-
TKG クラスタがプロビジョニングされている
vSphere 名前空間 に割り当てられている vSphere ストレージ プロファイルの名前である文字列。
... variables: - name: storageClass value: tkgs-storage-profile
storageClasses
storageClasses
変数は、クラスタのストレージ クラスの配列を構成する場合に使用します。
- storageClasses
-
1 つ以上の文字列の配列。各文字列は、TKG クラスタがプロビジョニングされている
vSphere 名前空間 に割り当てられている vSphere ストレージ プロファイルの名前です。
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
TKR_DATA
変数は、TKR 情報を指定する場合に使用します。
- TKR_DATA
- TKR バージョンおよびその他詳細の指定に使用するオブジェクト。
trust
trust
変数は、クラスタの信頼できる CA 証明書を 1 つ以上指定する場合に使用します。
- trust
- クラスタに TLS 証明書(追加の CA またはエンド証明書のいずれか)を追加するためのオブジェクト。
user
user
変数は、クラスタのユーザー認証情報を指定する場合に使用します。
- user
- 名前文字列とキー文字列、および sshAuthorizedKey 文字列を持つ、passwordSecret オブジェクトを含むオブジェクト。この変数を使用して、ユーザーの SSH キーをリモート SSH アクセス用のクラスタ ノードに追加できます。
vmClass
vmClass
変数は、クラスタ ノードの仮想マシン クラスを構成する場合に使用します。
- vmClass
- TKG クラスタがプロビジョニングされている vSphere 名前空間 にバインドされている仮想マシン クラスの名前にマッピングされる必須の文字列。