構成ファイルとオブジェクト仕様

このトピックでは、フラット構成ファイルまたは Kubernetes スタイルのオブジェクト仕様を使用して、Tanzu Kubernetes Grid (TKG) ワークロード クラスタを構成する方法について説明します。IaaS 固有の手順については、次を参照してください。

クラスタ タイプ

ワークロード クラスタの構成方法は、以下のセクションで説明するように、クラスタのタイプによって異なります。

  • (デフォルトのタイプ)クラスベースのクラスタは、Cluster オブジェクトに対して Kubernetes スタイルのオブジェクト仕様を使用します。クラスベースのクラスタを作成するには、このオブジェクト仕様または CLUSTER_NAME のような大文字とアンダースコアの変数を設定するフラット構造のクラスタ構成ファイルを tanzu cluster create に渡します。

    • より高度なカスタマイズでは、ClusterBootstrap とそれが参照するオブジェクトの仕様も必要になる場合があります。
  • (レガシー タイプ)プランベースのクラスタおよび TKC クラスタは、CLUSTER_NAME のような大文字とアンダースコアの変数を設定するフラット構造のクラスタ構成ファイルを使用します。レガシー クラスタを作成するには、この構成ファイルを tanzu cluster create に渡します。

    • より高度なカスタマイズでは、ワークロード クラスタまたはクラスタ プランをカスタマイズするために ytt オーバーレイが必要になる場合があります。ytt のダウンロードおよびインストール方法については、「Carvel ツールのインストール」を参照してください。

前述のクラスタ タイプおよびそれらで使用するクラスタ API プロバイダの詳細については、次の説明を参照してください。

ワークロード クラスタ用に選択する構成ファイルの詳細については、次の表を参照してください。

構成ファイル

Tanzu CLI で使用可能… 作成するワークロード クラスタのタイプ… インフラストラクチャ…
フラットなクラスタ構成ファイル
  • クラスベースのクラスタ
  • プランベースのクラスタ
  • TKC クラスタ
  • スタンドアローン管理クラスタを使用する vSphere 7/8、AWS、および Azure 上のクラスベースのクラスタ
  • スタンドアローン管理クラスタを使用する vSphere 7/8、AWS、および Azure 上のプランベースのクラスタ
  • スーパーバイザーを使用する vSphere 8 上の TKC クラスタ
Kubernetes スタイルのオブジェクト仕様 クラスベースのクラスタ スーパーバイザーを使用する vSphere 8、スタンドアローン管理クラスタを使用する vSphere 7/8、AWS、および Azure

クラスタ構成ファイルを使用したワークロード クラスタの構成

クラスタ構成ファイルを使用して、次のタイプのクラスタを構成できます。

  • クラスベースのクラスタ:これには、次の展開が含まれます。

    • スタンドアローン管理クラスタを使用する vSphere 7 および 8
    • AWS
    • Azure

    スーパーバイザーを使用する vSphere 8 にクラスベースのワークロードを展開する場合は、「スーパーバイザーで展開されたクラスベースのクラスタの構成(vSphere 8 のみ)」の説明に従って、オブジェクト仕様から展開する必要があります。

  • (レガシー)プランベースのクラスタおよび TKC クラスタ:これには、次の展開が含まれます。

    • プランベースのクラスタの場合:スタンドアローン管理クラスタを使用する vSphere 7/8、AWS、および Azure
    • TKC クラスタの場合:スーパーバイザーを使用する vSphere 8

クラスタ構成ファイルについて

ワークロード クラスタを vSphere、AWS、または Azure に展開する前に、クラスタの構成ファイルを作成します。このファイルを tanzu cluster create--file オプションに渡すと、Tanzu CLI はファイルで定義されている構成情報を使用してターゲット プラットフォームに接続し、クラスタが使用するリソースを作成します。

クラスタ構成ファイルを作成するには、以前の展開の既存の構成ファイルをコピーして更新します。また、空のテンプレートを使用してファイルを最初から作成することもできます。

最初のクラスタ構成ファイルの作成

ワークロード クラスタを展開する場合、クラスタのほとんどの構成は、展開に使用するスタンドアローン管理クラスタの構成と同じです。このため、ワークロード クラスタの構成ファイルを作成する最も簡単な方法は、スタンドアローン管理クラスタ構成ファイルのコピーから開始することです。

  1. 管理クラスタの YAML 構成ファイルを見つけます。

    • インストーラ インターフェイスから管理クラスタを展開し、tanzu mc create --ui を実行したときに --file オプションを指定しなかった場合、構成ファイルは ~/.config/tanzu/tkg/clusterconfigs/ に保存されます。ファイルの名前はランダムに生成され、たとえば bm8xk9bv1v.yaml のようになります。
    • インストーラ インターフェイスから管理クラスタを展開し、--file オプションを指定した場合、管理クラスタの構成は指定したファイルから取得されます。
    • インストーラ インターフェイスを使用せずに Tanzu CLI から管理クラスタを展開した場合、管理クラスタの構成は、--file オプションで指定したファイル、またはデフォルトの場所である ~/.config/tanzu/tkg/cluster-config.yaml から取得されます。
  2. 管理クラスタ構成ファイルのコピーを作成し、新しい名前で保存します。たとえば、ファイルを my-aws-cluster.yamlmy-azure-cluster.yaml、または my-vsphere-cluster.yaml として保存します。

  3. クラスタ構成ファイルの設定を更新します。デフォルトの Ubuntu 20.04 以外の OS を使用するようにワークロード クラスタを構成する場合は、OS_NAMEOS_VERSION の値を設定する必要があります。インストーラ インターフェイスでは、~/.config/tanzu/tkg/clusterconfigs に保存される管理クラスタ構成ファイルにノード仮想マシンの OS 値を含めません。

  4. ファイルを保存します。

スーパーバイザーを使用する vSphere 8 上の TKC クラスタのクラスタ構成ファイルを準備するには、「スーパーバイザーが展開された TKC クラスタの構成(レガシー)」を参照してください。

オブジェクト仕様を使用したワークロード クラスタの構成

Kubernetes スタイルのオブジェクト仕様ファイルを使用して、クラスベースのワークロード クラスタを次の環境に展開できます。

  • スーパーバイザーを使用しない vSphere 7/8
  • スーパーバイザーを使用する vSphere 8
  • AWS
  • Azure

オブジェクト仕様ファイルについて

オブジェクト仕様ファイルは、クラスタ構成ファイルと同じ目的で機能します。オブジェクト仕様を tanzu cluster create--file オプションに渡すと、Tanzu CLI はオブジェクト仕様で定義されている構成情報を使用してクラスタを作成します。

最初のオブジェクト仕様ファイルの作成

他の Kubernetes オブジェクトと同様に、オブジェクト仕様を作成および編集して、クラスベースのワークロード クラスタを構成できます。クラスタ オブジェクトの場合は、次のようになります。

  • Cluster オブジェクト:クラスタ トポロジなど、ほとんどのクラスタ オプションを構成します。このオブジェクト仕様を変更および再適用して、実行中のクラスタの構成を変更できます。
  • (オプション、vSphere with Tanzu) ClusterBootstrap オブジェクト:コンテナ ネットワーク インターフェイス (CNI) やコンテナ ストレージ インターフェイス (CSI) など、クラスタの最初の作成時にのみ適用されるデフォルト以外のオプションを構成します。これらのオプションは、実行中のクラスタで再構成できません。詳細については、「インフラストラクチャのワンタイム設定の構成」を参照してください。

最初のオブジェクト仕様ファイルを作成するには、次の手順を実行します。

  • スーパーバイザーを使用しない vSphere、AWS、または Azure にクラスベースのワークロード クラスタを展開する場合、Tanzu CLI を使用すると、クラスタを展開せずにクラスタ構成ファイルをオブジェクト仕様ファイルに変換できます。

    • グローバル構成)Tanzu CLI の auto-apply-generated-clusterclass-based-configuration 機能を使用します。この機能は、デフォルトで false に設定されています。auto-apply-generated-clusterclass-based-configurationfalse に設定されている場合に、--file フラグを指定して tanzu cluster create を実行すると、クラスタ構成ファイルがオブジェクト仕様ファイルに変換され、クラスタを作成することなくコマンドが終了します。構成を確認したら、「オブジェクト仕様からのクラスベースのクラスタの作成」の説明に従って、Tanzu CLI によって生成されたオブジェクト仕様ファイルを使用して tanzu cluster create を再実行します。デフォルトの構成を更新した場合、false に設定を戻すには、次のコマンドを実行します。

      tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration false
      
    • 単一クラスタ--dry-run オプションを tanzu cluster create に渡して、出力をファイルに保存します。クラスタを作成する場合に使用するのと同じオプションと構成 --file を使用します。例:

      tanzu cluster create my-cluster --file my-cluster-config.yaml --dry-run > my-cluster-spec.yaml
      

      このオブジェクト仕様を使用して、「オブジェクト仕様からのクラスベースのクラスタの作成」の説明に従ってクラスタを展開できます。

  • スーパーバイザーを使用する vSphere 8 にクラスベースのワークロード クラスタを展開する場合は、「スーパーバイザーで展開されたクラスベースのクラスタの構成(vSphere 8 のみ)」の説明に従って、Cluster オブジェクト仕様を作成または適用します。vSphere 8 のドキュメントには、作業用のサンプルとして使用できる Cluster オブジェクト仕様があります。例:v1beta1 サンプル:デフォルトのクラスタ

ワンタイム インフラストラクチャ設定の構成(vSphere with Tanzu)

Cluster オブジェクト仕様では最も一般的なクラスタ設定を構成できますが、一部のクラスタ コンポーネントは、クラスタのノードの基盤となる Tanzu Kubernetes リリース (TKr) から取得されます。たとえば、TKr は、クラスタが使用する CNI、CSI、および Pinniped バージョンを指定します。

これらのインフラストラクチャ レベルのオプションは、ClusterBootstrap オブジェクトによってクラスタ作成時に適用され、実行中のクラスタでは変更できません。クラスタを作成する前にこれらのオプションを構成する一般的な手順は次のとおりです。

  1. ClusterBootstrap オブジェクトとそのオブジェクトが参照するカスタム オブジェクト(CalicoConfig オブジェクトなど)のオブジェクト仕様を作成します。

  2. Cluster オブジェクト自体のオブジェクト仕様を作成します。

  3. 次のように、すべてのオブジェクト仕様の metadata に、作成するクラスタの名前と名前空間を含めます。

    apiVersion: run.tanzu.vmware.com/v1alpha3
    kind: ClusterBootstrap
    metadata:
      name: MY-CLUSTER
      namespace: MY-NAMESPACE
    

    カスタマイズには、注釈などの追加のメタデータが必要になる場合があります。

  4. Cluster 定義を含むすべてのオブジェクト仕様を 1 つのファイルに連結します。仕様は、3 つのダッシュ (---) で構成される行で区切ります。

  5. 次のように、オブジェクト仕様を kubectl apply--file オプションに渡します。

    kubectl config use-context CONTEXT-NAME
    
    kubectl apply -f my-custom-cluster-objects.yaml
    

代替方法:最後の 2 つの手順の代わりに、Cluster オブジェクトを除くすべてのオブジェクト仕様に対して kubectl apply -f を実行し、Cluster オブジェクト仕様に対して tanzu cluster create --file を実行することができます。

この手順の具体的な例については、「デフォルト以外の CNI を使用したクラスタの作成」を参照してください。これにより、クラスタの CNI が Calico に設定されます。

ワークロード クラスタ、kubectl および kubeconfig

ワークロード クラスタの作成時に、Tanzu Kubernetes Grid は kubectl コンテキストを自動的に設定しません。kubectl config use-context コマンドを使用して、ワークロード クラスタに kubectl コンテキストを手動で設定する必要があります。

デフォルトでは、KUBECONFIG オプションを指定してクラスタの kubeconfig を特定のファイルに保存しない限り、展開するすべてのワークロード クラスタは共有の .kube/config ファイルに追加されます。共有の .kube/config ファイルを削除しても、管理クラスタ用の .kube-tkg/config ファイルが残っている場合は、tanzu cluster kubeconfig get CLUSTER-NAME コマンドを使用して、ワークロード クラスタの .kube/config を回復できます。

Tanzu Kubernetes Grid 操作の実行中は、コンテキストを変更したり、.kube-tkg/config または .kube/config ファイルを編集したりしないでください。

次の手順

インフラストラクチャのクラスタ構成トピックに進みます。

check-circle-line exclamation-circle-line close-line
Scroll to top icon