Tanzu Kubernetes Grid サービス 宣言型 API は、Tanzu Kubernetes クラスタを構成するためのパラメータをいくつか公開しています。クラスタをプロビジョニングおよびカスタマイズするには、すべてのパラメータのリストと説明、および使用に関するガイドラインを参照してください。

Tanzu Kubernetes クラスタをプロビジョニングするための注釈付き YAML

注釈付き YAML には、 Tanzu Kubernetes クラスタをプロビジョニングする際に使用可能なすべてのパラメータと、各フィールドの概要コメントが示されています。
注: クラスタをプロビジョニングする場合は、注釈付き YAML は検証されません。このガイダンスの例については、 Tanzu Kubernetes Grid サービス v1alpha1 API を使用した Tanzu Kubernetes クラスタのプロビジョニングの例を参照してください。
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
  name: <tanzu kubernetes cluster name>
  namespace: <vsphere namespace where the cluster will be provisioned>
spec:
  distribution:
    version: <tanzu kubernetes release version string: full, point, short>      
  topology:                               
    controlPlane:
      count: <integer either 1 or 3>
      class: <vm class bound to the target vsphere namespace>
      storageClass: <vsphere storage policy bound to the target vsphere namespace>
      volumes: #optional setting for high-churn control plane component (such as etcd)
        - name: <user-defined string>
          mountPath: </dir/path>
          capacity:
            storage: <size in GiB> 
    workers:                              
      count: <integer from 0 to 150>
      class: <vm class bound to the target vsphere namespace>
      storageClass: <vsphere storage policy bound to the target vsphere namespace>
      volumes: #optional setting for high-churn worker node component (such as containerd)
        - name: <user-defined string>
          mountPath: </dir/path>
          capacity:
            storage: <size in GiB>              
  settings: #all spec.settings are optional
    storage: #optional storage settings
      classes: [<array of kubernetes storage classes for dynamic pvc provisioning>]
      defaultClass: <default kubernetes storage class>
    network: #optional network settings
      cni: #override default cni set in the tkgservicesonfiguration spec
        name: <antrea or calico>
      pods: #custom pod network
        cidrBlocks: [<array of pod cidr blocks>]
      services: #custom service network
        cidrBlocks: [<array of service cidr blocks>]
      serviceDomain: <custom service domain>
      proxy: #proxy server for outbound connections
        httpProxy: http://<IP:PORT> 
        httpsProxy: http://<IP:PORT>
        noProxy: [<array of CIDRs to not proxy>]
      trust: #trust fields for custom public certs for tls
        additionalTrustedCAs:
          - name: <first-cert-name>
            data: <base64-encoded string of PEM encoded public cert 1>
          - name: <second-cert-name>
            data: <base64-encoded string of PEM encoded public cert 2>

Tanzu Kubernetes クラスタをプロビジョニングするためのパラメータ

次の表に、Tanzu Kubernetes クラスタのプロビジョニングに使用できるすべてのパラメータおよび使用できる値のリストと説明を示します。例については、Tanzu Kubernetes Grid サービス v1alpha1 API の構成の例を参照してください。

表 1. Tanzu Kubernetes クラスタをプロビジョニングするためのパラメータ
名前 説明
apiVersion run.tanzu.vmware.com/v1alpha1 Tanzu Kubernetes Grid サービス API のバージョンを指定します。
kind TanzuKubernetesCluster 作成する Kubernetes リソースのタイプを指定します。使用できる値は TanzuKubernetesCluster のみです(大文字と小文字を区別)。
metadata クラスタ メタデータのセクション namenamespace などのクラスタ メタデータが含まれています。これは標準の Kubernetes メタデータであるため、name の代わりに generateName を使用したり、ラベルや注釈を追加したりすることができます。
name 英数字とダッシュを使用するユーザー定義の文字列(例:my-tkg-cluster-1 作成するクラスタの名前を指定します。現在のクラスタの名前付けの制約:
  • 名前の長さは 41 文字以内にする必要があります。
  • 名前は文字で始まる必要があります。
  • 名前には、文字、数字、ハイフンを含めることができます。
  • 名前は文字または数字で終わる必要があります。
namespace 英数字とダッシュを使用するユーザー定義の文字列(例:my-sns-1 クラスタがデプロイされるスーパーバイザー ネームスペースの名前を識別します。これは、スーパーバイザー クラスタ内にあるスーパーバイザー ネームスペースへの参照です。
spec クラスタの技術仕様のセクション ノードの toplogy や Kubernetes ソフトウェアの distribution など、クラスタのエンド状態の仕様を宣言型形式で示します。
distribution Tanzu Kubernetes リリースのバージョンを指定するセクション クラスタのディストリビューションを指定します。これは、制御プレーンとワーカー ノードにインストールされている Tanzu Kubernetes クラスタ ソフトウェアで、Kubernetes 自体も含みます。
version Kubernetes のバージョンを表す、ダッシュを含む英数字の文字列(例:v1.20.2+vmware.1-tkg.1v1.20.2v1.20 セマンティックなバージョン表記を使用して、クラスタ ノードにインストールする Kubernetes ディストリビューションのソフトウェア バージョンを指定します。完全修飾バージョンを指定するか、ショートカットを使用することができます。「version: v1.20.2」は、そのパッチ バージョンに一致する最新のイメージに解決され、「version: v1.20」は該当する最新のパッチ バージョンに解決されます。クラスタの作成後、その説明に解決後のバージョンが「fullVersion」として表示されます。
topology クラスタ ノード トポロジのセクション クラスタ ノードの数、目的、および編成と、それぞれに割り当てられたリソースを示すフィールドを含んでいます。クラスタ ノードは、目的に応じて control-plane または worker のプールにグループ化されます。各プールは同種で、同じリソース割り当てを持ち、同じストレージを使用します。
controlPlane 制御プレーン設定のセクション ノードの数 (count)、仮想マシンのタイプ (class)、各ノードに割り当てられるストレージ リソース (storageClass) など、クラスタ制御プレーンのトポロジを指定します。
count 1 または 3 のいずれかの整数 制御プレーン ノードの数を指定します。制御プレーンには奇数個のノードが必要です。
class 列挙セットからの文字列形式のシステム定義要素(例:guaranteed-smallbest-effort-large プール内の各ノードで使用される仮想ハードウェア設定を示す VirtualMachineClass の名前を指定します。これにより、ノード(CPU とメモリ)で使用できるハードウェア、およびこれらのリソースの要求と制限が制御されます。Tanzu Kubernetes クラスタの仮想マシンのクラスを参照してください。
storageClass node-storage(例) 制御プレーン ノードのルート ファイル システムを格納するディスクのストレージに使用されるストレージ クラスを識別します。使用可能なストレージ クラスを表示するには、名前空間で kubectl describe ns を実行します。名前空間で使用可能なストレージ クラスは、vSphere 管理者が設定するストレージによって異なります。スーパーバイザー ネームスペースに関連付けられているストレージ クラスがクラスタに複製されます。つまり、ストレージ クラスがこのフィールドで有効な値になるためには、スーパーバイザー ネームスペースで使用できる必要があります。vSphere 名前空間の構成と管理を参照してください。
volumes
オプションのストレージ設定
  • volumes:
    • name:string
    • mountPath:/dir/path
    • キャパシティ
      • storage:GiB サイズ
制御プレーン ノードの etcd のディスクとストレージのパラメータを個別に指定できます。ディスク パラメータとストレージ パラメータを個別に使用するクラスタの例を参照してください。
workers ワーカー ノード設定のセクション ノードの数 (count)、仮想マシンのタイプ (class)、各ノードに割り当てられるストレージ リソース (storageClass) など、クラスタ ワーカー ノードのトポロジを指定します。
count 0 ~ 150 の整数(例:127 クラスタ内のワーカー ノードの台数を指定します。ワーカー ノード数がゼロのクラスタを作成することで、制御プレーン ノードのみを持つクラスタを使用できます。ワーカー ノードの数には、厳密な上限はありませんが、妥当な制限は 150 です。
注: 0 台のワーカー ノードを使用してプロビジョニングされたクラスタには、ロード バランサ サービスが割り当てられません。
class 列挙セットからの文字列形式のシステム定義要素(例:guaranteed-smallbest-effort-large プール内の各ノードで使用される仮想ハードウェア設定を示す VirtualMachineClass の名前を指定します。これにより、ノード(CPU とメモリ)で使用できるハードウェア、およびこれらのリソースの要求と制限が制御されます。Tanzu Kubernetes クラスタの仮想マシンのクラスを参照してください。
storageClass node-storage(例) ワーカー ノードのルート ファイル システムを格納するディスクのストレージに使用されるストレージ クラスを識別します。使用可能なストレージ クラスを一覧表示するには、名前空間で kubectl describe ns を実行します。名前空間で使用可能なストレージ クラスは、vSphere 管理者が設定するストレージによって異なります。スーパーバイザー ネームスペースに関連付けられているストレージ クラスがクラスタに複製されます。つまり、有効にするためには、スーパーバイザー ネームスペースでストレージ クラスを使用できる必要があります。vSphere 名前空間の構成と管理を参照してください。
volumes
オプションのストレージ設定
  • volumes:
    • name:string
    • mountPath:/dir/path
    • キャパシティ
      • storage:GiB サイズ
ワーカー ノードのコンテナ イメージのディスクとストレージのパラメータを個別に指定できます。ディスク パラメータとストレージ パラメータを個別に使用するクラスタの例を参照してください。
settings クラスタ固有の設定に関するセクション(すべての spec.settings はオプション) クラスタのランタイム構成情報(オプション)を識別します。これには、ノードの network の詳細とポッドのパーシステント storage が含まれます。
storage ストレージを指定するセクション コンテナ ワークロードのパーシステント ボリューム (PV) ストレージ エントリを識別します。
classes 1 つ以上のユーザー定義文字列の配列(例:["gold", "silver"] コンテナ ワークロードの名前付きパーシステント ボリューム (PV) ストレージ クラスを指定します。スーパーバイザー ネームスペースに関連付けられているストレージ クラスがクラスタに複製されます。つまり、有効な値であるためには、スーパーバイザー ネームスペースでストレージ クラスを使用できる必要があります。ストレージ クラスとパーシステント ボリュームのデフォルト クラスを使用するクラスタの例を参照してください。
defaultClass silver(例) クラスタ内でデフォルトとして注釈が付けられる名前付きストレージ クラスを指定します。これを指定しないと、デフォルトはありません。defaultClass を指定するために 1 つまたは複数の classes を指定する必要はありません。一部のワークロードでは、Helm などのデフォルト クラスが必要な場合があります。ストレージ クラスとパーシステント ボリュームのデフォルト クラスを使用するクラスタの例を参照してください。
network ネットワーク設定のセクション マーカー クラスタのネットワーク関連の設定を指定します。
cni CNI を指定するためのセクション マーカー クラスタのコンテナ ネットワーク インターフェイス (CNI) プラグインを識別します。デフォルトは Antrea です。新しいクラスタに指定する必要はありません。
name 文字列 antrea または calico 使用する CNI を指定します。Antrea と Calico がサポートされています。システム構成により、Antrea がデフォルトの CNI として設定されます。デフォルトの CNI は変更できます。デフォルトを使用する場合、このフィールドを指定する必要はありません。
services Kubernetes サービス サブネットを指定するセクション マーカー Kubernetes サービスのネットワーク設定を識別します。デフォルトは 10.96.0.0/12 です。
cidrBlocks 配列 ["198.51.100.0/12"](例) Kubernetes サービスで使用する IP アドレスの範囲を指定します。デフォルトは 10.96.0.0/12 です。スーパーバイザー クラスタ用に選択された設定と重複しないようにしてください。このフィールドは複数の範囲を指定できる配列ですが、現在は IP アドレス範囲を 1 つのみ使用できます。Tanzu Kubernetes Grid サービス v1alpha1 API を使用した Tanzu Kubernetes クラスタのプロビジョニングの例のネットワークの例を参照してください。
pods Kubernetes ポッドのサブネットを指定するセクション マーカー ポッドのネットワーク設定を指定します。デフォルトは 192.168.0.0/16 です。最小ブロック サイズは /24 です。
cidrBlocks 配列 ["192.0.2.0/16"](例) Kubernetes ポッドで使用する IP アドレスの範囲を指定します。デフォルトは 192.168.0.0/16 です。スーパーバイザー クラスタ用に選択された設定と重複しないようにしてください。ポッドのサブネット サイズは /24 以上にする必要があります。このフィールドは複数の範囲を指定できる配列ですが、現在は IP アドレス範囲を 1 つのみ使用できます。Tanzu Kubernetes Grid サービス v1alpha1 API を使用した Tanzu Kubernetes クラスタのプロビジョニングの例のネットワークの例を参照してください。
serviceDomain "cluster.local" クラスタのサービス ドメインを指定します。デフォルトは cluster.local です。
proxy クラスタの HTTP(S) プロキシ設定を指定するセクション。実装されている場合は、すべてのフィールドが必須です。 指定したプロキシ設定のフィールドに入力します。グローバル プロキシが設定され、クラスタ プロキシが個別に設定されていない場合は、自動的にポピュレートされます。プロキシ サーバを使用するクラスタの例を参照してください。
httpProxy http://<user>:<pwd>@<ip>:<port> クラスタ外の HTTP 接続の作成に使用するプロキシ URL を指定します。
httpsProxy http://<user>:<pwd>@<ip>:<port> クラスタ外の HTTPS 接続の作成に使用するプロキシ URL を指定します。
noProxy

プロキシにしない CIDR ブロックの配列([10.246.0.0/16,192.168.144.0/20,192.168.128.0/20] など)。

スーパーバイザー クラスタのワークロード ネットワークから必要な値を取得します(Pod CIDRsIngress CIDRs、および Egress CIDRs)。

noProxy 配列フィールドに含める値については、次の図を参照してください。

スーパーバイザー クラスタ上のワークロード ネットワークで使用されるサブネット(ポッド、Ingress、および Egress)をプロキシにすることはできません。

noProxy フィールドにスーパーバイザー クラスタのサービス CIDR を含める必要はありません。Tanzu Kubernetes クラスタは、これらのサービスと連携しません。

エンドポイント localhost127.0.0.1 は自動的にプロキシされません。これらを noProxy フィールドに追加する必要はありません。

Tanzu Kubernetes クラスタのポッド CIDR およびサービス CIDR は、自動的にプロキシされません。これらを noProxy フィールドに追加する必要はありません。

プロキシ サーバを使用するクラスタの例を参照してください。

trust trust パラメータのセクション マーカー。 データを受け入れない。
additionalTrustedCAs namedata の証明書の配列をそれぞれ受け入れます。 データを受け入れない。
name 文字列 TLS 証明書の名前。
data 文字列 PEM でエンコードされたパブリック証明書の base64 エンコード文字列。

図に示すように、スーパーバイザー クラスタ[ワークロード ネットワーク] から必要な noProxy 値を取得します。

[ワークロード ネットワーク] ウィンドウ。[ポッド CIDR]、[Ingress CIDR]、[Egress CIDR]の値が強調表示されています。