Artifact Registry をワークロード イメージの限定公開レジストリとして使用する

このページでは、ワークロード イメージを保存できる非公開 Docker レジストリとして Google の Artifact Registry を使用するように、VMware 用 Google Distributed Cloud(ソフトウェアのみ)管理クラスタを構成する方法について説明します。ワークロード イメージを保存するように非公開レジストリを構成すると、クラスタの作成またはアップグレード時に Google Distributed Cloud システム イメージも非公開レジストリに保存されます。

Artifact Registry は複数の認証方法をサポートしていますが、Artifact Registry をプライベート レジストリとして使用するには、認証にサービス アカウント キーを使用する必要があります。このページの手順では、管理クラスタ構成ファイルの privateRegistry セクションで必要なアドレス、認証情報、CA 証明書を取得する方法について説明します。

認証情報ファイルを構成する

  1. レジストリの認証を構成していない場合は、Docker 用の Artifact Registry に対する認証を構成するの手順に沿って、サービス アカウントを使用して認証を構成します。認証には、JSON キーファイルを使用するサービス アカウントを使用する必要があります。

  2. 次の例に示すように、認証情報構成ファイル admin-creds.yaml を作成します。username"_json_key" にする必要があります。name フィールドには、privateRegistry.entry フィールドに追加する値と一致する値を任意に使用できます。

    apiVersion: v1
    kind: "CredentialFile"
    items:
    - name: "private-registry-creds"
      username: "_json_key"
      password:
    
  3. レジストリのサービス アカウントの JSON キーファイルがあるディレクトリで、キーファイルに対して cat を実行して内容を出力します。

  4. JSON 鍵の内容全体をコピーして、password フィールドに貼り付けます。内容に二重引用符が含まれているため、JSON キーの内容は必ず一重引用符で囲んでください。次に例を示します。

    apiVersion: v1
    kind: "CredentialFile"
    items:
    - name: "private-registry-creds"
      username: "_json_key"
      password: '{
    "type": "service_account",
    "project_id": "example-project-12345",
    "private_key_id": "d2661ccb21e686658c6552cf1e0166b857091b2e",
    "private_key": "-----BEGIN PRIVATE ... -----END PRIVATE KEY-----\n",
    "client_email": "test-537@example-project-12345.iam.gserviceaccount.com",
    "client_id": "111772984510027821291",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://oauth2.googleapis.com/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test-537%40example-project-12345.iam.gserviceaccount.com",
    "universe_domain": "googleapis.com"
    }
    '
    

管理クラスタ構成ファイルで privateRegistry を構成する

限定公開レジストリを使用するには、管理クラスタを作成するときに privateRegistry セクションを構成する必要があります。クラスタの作成後に privateRegistry.address を変更することはできませんが、他の設定は変更可能であり、必要に応じて更新できます。

  1. 次のコマンドを実行してレジストリ アドレスを取得します。

    gcloud artifacts repositories describe REGISTRY_NAME \
        --project=PROJECT_ID
        --location=REGION
    

    次のように置き換えます。

    • REGISTRY_NAME: レジストリの名前。
    • PROJECT_ID: レジストリが作成されたプロジェクトの ID。
    • LOCATION: レジストリが作成されたリージョン(us-west2 など)。

    出力は次のようになります。

    Encryption: Google-managed key
    Repository Size: 0.000MB
    cleanupPolicyDryRun: true
    createTime: '2025-01-28T03:27:57.701672Z'
    dockerConfig: {}
    format: DOCKER
    mode: STANDARD_REPOSITORY
    name: projects/example-project-12345/locations/us-west2/repositories/test
    registryUri: us-west2-docker.pkg.dev/example-project-12345/test
    satisfiesPzi: true
    updateTime: '2025-01-28T03:27:57.701672Z'
    vulnerabilityScanningConfig:
      enablementConfig: INHERITED
      enablementState: SCANNING_ACTIVE
      lastEnableTime: '2025-01-28T03:27:49.385246079Z'
    

    privateRegistry.address には、出力の registryUri の値を使用します。

  2. 次のコマンドを実行して、Artifact Registry エンドポイントの CA 証明書を抽出し、ar-ca.pem という名前のファイルに保存します。

    true | openssl s_client -connect REGION-docker.pkg.dev:443 -showcerts 2>/dev/null| sed -ne '/-BEGIN/,/-END/p' > ar-ca.pem
    
  3. privateRegistry セクションに次のように入力します。

    privateRegistry:
      address: "REGISTRY_ADDRESS"
      credentials:
        fileRef:
          path: "CREDENTIAL_FILE_PATH"
          entry: "private-registry-creds"
      caCertPath: "CA_CERT_PATH"
    componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_KEY_PATH"
    

    次のように置き換えます。

    • REGISTRY_ADDRESS: registryUri 値。
    • CREDENTIAL_FILE_PATH: admin-creds.yaml ファイルのフルパスまたは相対パス。
    • CA_CERT_PATH: ar-ca.pem ファイルのフルパスまたは相対パス。
    • COMPONENT_ACCESS_KEY_PATH: コンポーネント アクセス サービス アカウント キー ファイルの完全パスまたは相対パス。