追加の信頼できる CA 証明書を 1 つ以上含む v1beta1 クラスタをプロビジョニングするには、この例を参照してください。

v1beta1 の例:追加の信頼できる CA 証明書を含むクラスタ

クラスタ v1beta1 API は、追加の信頼できる CA 証明書を 1 つ以上含むクラスタをプロビジョニングするための trust 変数を提供します。
表 1. v1beta1 API の trust 変数
フィールド 説明
trust セクション マーカー。データを受け入れない。
additionalTrustedCAs セクション マーカー。それぞれの name を示す証明書の配列が含まれます。
name double 型の base64 エンコードの PEM 形式の CA 証明書を含む Kubernetes シークレットの data マップ フィールドのユーザー定義名。
注: base64 二重エンコードは必須です。内容が double 型の base64 エンコード形式でない場合は、結果の PEM ファイルを処理できません。
次の例は、CA 証明書を含む Kubernetes シークレットを v1beta1 API クラスタ仕様に追加する方法を示しています。
#cluster-with-trusted-private-reg-cert.yaml
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: cluster01
  namespace: tkgs-cluster-ns
spec:
  clusterNetwork:
    services:
      cidrBlocks: ["198.52.100.0/12"]
    pods:
      cidrBlocks: ["192.101.2.0/16"]
    serviceDomain: "cluster.local"
  topology:
    class: tanzukubernetescluster
    version: v1.26.5+vmware.2-fips.1-tkg.1
    controlPlane:
      replicas: 3
    workers:
      machineDeployments:
        - class: node-pool
          name: node-pool-01
          replicas: 3
    variables:
      - name: vmClass
        value: guaranteed-medium
      - name: storageClass
        value: tkgs-storage-profile
      - name: defaultStorageClass
        value: tkgs-storage-profile
      - name: trust
        value:
          additionalTrustedCAs:
          - name: additional-ca-1
次の例は、追加の信頼できる CA 証明書を含む Kubernetes シークレットを示しています。
#additional-ca-1.yaml
apiVersion: v1
data:
  additional-ca-1: TFMwdExTMUNSGlSzZ3Jaa...VVNVWkpRMEMwdExTMHRDZz09
kind: Secret
metadata:
  name: cluster01-user-trusted-ca-secret
  namespace: tkgs-cluster-ns
type: Opaque
ここで、
  • シークレットの data マップの値は、ユーザー定義の文字列です。これは CA 証明書の名前(この例では additional-ca-1)であり、値は double 型の base64 エンコードの PEM 形式の CA 証明書です。
  • metadata セクションでは、シークレットの名前を CLUSTER-NAME-user-trusted-ca-secret にする必要があります。CLUSTER-NAME はクラスタの名前です。このシークレットは、クラスタと同じ vSphere 名前空間 で作成する必要があります。
CA 証明書の内容を double 型の base64 エンコード形式にします。

手順:新しいクラスタ

新しい TKGS クラスタに追加の信頼できる CA 証明書を 1 つ以上含める場合は、次の手順を実行します。
  1. CA 証明書の内容を double 型の base64 エンコード形式にします。
  2. データ マップ名を含む Kubernetes シークレットを作成します。値は double 型の base64 エンコードの PEM 形式の CA 証明書です。
  3. クラスタ仕様で、trust.additionalTrustedCAs 変数にデータ マップの名前をポピュレートします。
  4. 通常どおりクラスタをプロビジョニングします。

    Kubectl を使用して TKG クラスタをプロビジョニングするためのワークフローを参照してください。

  5. クラスタが正常にプロビジョニングされると、追加した CA 証明書がクラスタによって信頼されます。

手順:既存のクラスタ

既存のクラスタに追加の信頼できる CA 証明書を 1 つ以上追加する場合は、次の手順を実行します。
  1. CA 証明書の内容を double 型の base64 エンコード形式にします。
  2. データ マップ名を含む Kubernetes シークレットを作成します。値は double 型の base64 エンコードの PEM 形式の CA 証明書です。
  3. kubectl の編集が構成されていることを確認します。

    kubectl のテキスト エディタの構成を参照してください。

  4. クラスタ仕様を編集します。
    kubectl edit tanzukubernetescluster/tkgs-cluster-name
  5. trust.additionalTrustedCAs セクションを仕様に追加します。
  6. double 型の base64 エンコードの PEM 形式の CA 証明書を含むシークレット内のデータ マップの名前を additionalTrustedCAs フィールドにポピュレートします。
  7. テキスト エディタで変更を保存し、変更が kubectl によって登録されたことを確認します。
    kubectl edit cluster/tkgs-cluster-name
    cluster.run.tanzu.vmware.com/tkgs-cluster-name edited
  8. クラスタのローリング アップデートが開始されると、信頼できる CA 証明書が追加されます。

    TKG サービス クラスタのローリング アップデート モデルについてを参照してください。

追加の信頼できる CA 証明書の確認

クラスタに追加された信頼できる CA 証明書は、クラスタの kubeconfig ファイルに含まれています。

証明書のローテーション

証明書をローテーションするには、新しいシークレットを作成し、適切な値を使用してクラスタ仕様を編集します。これにより、クラスタのローリング アップデートがトリガされます。
注: システムは、 CLUSTER-NAME-user-trusted-ca-secret への変更を監視しません。 data マップ値が変更された場合は、クラスタに反映されません。新しいシークレットを作成して、そのデータ マップの nametrust.additionalTrustCAs にする必要があります。

追加の信頼できる CA 証明書のトラブルシューティング

追加の信頼できる CA に関するエラーのトラブルシューティングを参照してください。

使用事例

最も一般的な使用事例は、コンテナ レジストリに接続するための信頼できる CA を追加する場合です。TKG サービス クラスタとプライベート コンテナ レジストリの統合を参照してください。