プライベート Container Registry を設定する

このページでは、VMware 用 Google Distributed Cloud(ソフトウェアのみ)用に既存のコンテナ レジストリ サーバーを構成する方法について説明します。

このページは、技術インフラストラクチャの設定、モニタリング、管理を行う管理者、アーキテクト、オペレーターを対象としています。 Google Cloud のコンテンツで参照する一般的なロールとタスク例の詳細については、一般的な GKE Enterprise ユーザーロールとタスクをご覧ください。

概要

独自の Container Registry サーバーを指定することは任意です。コンテナ レジストリ サーバーを指定しない場合、Google Distributed Cloud は Artifact Registry からコンテナ イメージを pull します。

Google Distributed Cloud は、セキュリティで保護されていないコンテナ レジストリをサポートしていません。コンテナ レジストリ サーバーを起動する際、証明書と鍵を提供する必要があります。証明書は、パブリック認証局(CA)によって署名されることも、自己署名されることもあります。

Container Registry サーバーを作成する

コンテナ レジストリ サーバーの作成方法については、Docker ドキュメントの外部からアクセス可能なレジストリを実行するをご覧ください。

レジストリを構成する

非公開コンテナ レジストリを使用するには、クラスタの作成時に管理クラスタ構成ファイルの privateRegistry セクションに入力します。

イメージがレジストリ サーバーから pull されていることを確認する

レジストリ サーバーからイメージが pull されていることを確認する方法は、管理クラスタの作成時に高度なクラスタを有効にしたかどうかによって異なります。

  • 高度なクラスタが有効になっていない場合は、次のコマンドを実行します。

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \
        --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}"
    

    ADMIN_CLUSTER_KUBECONFIG は、管理クラスタの kubeconfig ファイルのパスに置き換えます。

    このコマンドの出力には、クラスタ内のすべてのイメージが表示されます。すべての Google Distributed Cloud イメージが独自のリポジトリ サーバーから取得されていることを確認できます。

  • 高度なクラスタが有効になっている場合は、次の操作を行います。

    containerd がローカル レジストリからイメージを pull しているかどうかは、次の手順で config.toml というファイルの内容を調べることで判断できます。

    1. ノードにログインして、ファイル /etc/containerd/config.toml の内容を確認します。
    2. config.toml ファイルの pluginsio.containerd.grpc.v1.cri".registry.mirrors フィールドを確認して、レジストリ サーバーが endpoint フィールドにリストされているかどうかを確認します。

      以下は、config.toml ファイルの例からの抜粋です。

      version = 2
      root = "/var/lib/containerd"
      state = "/run/containerd"
      ...
      [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io"]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."privateregistry2.io".tls]
      ca_file = '/etc/containerd/certs.d/privateregistry2.io/ca.crt'
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
      endpoint = ["http://privateregistry.io", "http://privateregistry2.io"]
      ...
      
    3. レジストリ ミラーが endpoint フィールドに表示される場合、ノードは Artifact Registry ではなくレジストリ ミラーからイメージを pull します。