TKG クラスタ ポッドで外部コンテナ レジストリを使用できます。

プライベート コンテナ レジストリの使用事例

コンテナ レジストリは、Kubernetes 環境に重要な機能を提供し、コンテナ イメージを保存して共有するための一元的なリポジトリとして機能します。最もよく使用されるパブリック コンテナ レジストリは Docker Hubです。プライベート コンテナ レジストリのサービスは多数あります。VMware Harbor は、スーパーバイザー に付属するオープンソースのクラウド ネイティブなプライベート コンテナ レジストリです。

プライベート コンテナ レジストリの構成

TKG クラスタでプライベート レジストリを使用するには、1 つ以上の自己署名証明書を使用して、HTTPS 経由でプライベート レジストリ コンテンツを提供するように TKG クラスタを構成します。クラスタ仕様に、additionalTrustedCAs フィールド ペアを持つ trust セクションを含めます。TKG クラスタが信頼する自己署名証明書は、いくつでも定義できます。この機能を使用すると、証明書のリストを簡単に定義でき、ローテーションが必要な場合にそれらの証明書を更新できます。

プライベート コンテナ レジストリ証明書の信頼フィールド

証明書エントリ(PEM でエンコードされたパブリック証明書の base64 エンコード文字列)を TKG クラスタ仕様の additionalTrustedCAs セクションに追加します。

表 1. プライベート レジストリの信頼フィールド
フィールド 説明
trust セクション マーカー。データを受け入れない。
additionalTrustedCAs セクション マーカー。それぞれの名前とデータを示す証明書の配列が含まれます。
name TLS 証明書の名前。
data プレーン テキストで保存されている PEM でエンコードされたパブリック証明書の double 型 base64 エンコード文字列。
注: base64 二重エンコードは必須です。データ マップ値の内容が base6 二重エンコードでない場合は、結果の PEM ファイルを処理できません。

v1alpha3 API の例

次の例は、プライベート レジストリ証明書を含む TKG 2 クラスタの作成方法を示しています。仕様の詳細については、 v1alpha3 の例:カスタム ネットワークを使用する TKCを参照してください。
注: 既存のクラスタを編集し、プライベート レジストリ証明書フィールドを追加するには、 kubectl のテキスト エディタの構成の説明に従って kubectl edit メソッドを使用してください。
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkg2-private-registry
  namespace: tkg2-cluster-ns
spec:
  topology:
    controlPlane:
      ...
    nodePools:
    - name: worker
      ...
  settings:
    network:
      ...
      trust:
        additionalTrustedCAs:
          - name: CompanyInternalCA-1
            data: LS0tLS1C...LS0tCg==
          - name: CompanyInternalCA-2
            data: MTLtMT1C...MT0tPg==

v1beta1 API の例

次の例は、v1beta1 API を使用して、プライベート レジストリ証明書を含む TKG クラスタを作成する方法を示しています。 クラスタ v1beta1 API 仕様の trust変数の説明を参照してください。
注: 既存のクラスタを編集し、プライベート レジストリ証明書フィールドを追加するには、 kubectl のテキスト エディタの構成の説明に従って kubectl edit メソッドを使用してください。
spec:
  clusterNetwork:
    pods:
      ...
    serviceDomain: 
    services:
      ...
  topology:
    class: tanzukubernetescluster
    controlPlane:
      ...
    variables:
    - name: storageClass
      value: tkg2-storage-profile
    - name: trust
      value:
        additionalTrustedCAs:
        - name: additional-ca-1

プライベート コンテナ レジストリ証明書の管理

証明書をローテーションするには、仮想インフラストラクチャ管理者または DevOps エンジニアが TKG クラスタ仕様の証明書の内容を変更し、その構成を適用して、クラスタのローリング アップデートをトリガします。

証明書のリストから証明書を削除するには、証明書を削除し、更新された仕様を適用して、ローリング アップデートをトリガします。