このページでは、ワークロード イメージを保存できる限定公開の Docker レジストリとして Google の Artifact Registry を使用するように VMware 用 Google Distributed Cloud(ソフトウェアのみ)管理クラスタを構成する方法について説明します。ワークロード イメージを保存するように限定公開のレジストリを構成すると、クラスタの作成時またはアップグレード時に Google Distributed Cloud のシステム イメージも限定公開のレジストリに保存されます。
Artifact Registry は複数の認証方法をサポートしていますが、Artifact Registry を限定公開のレジストリとして使用するには、認証にサービス アカウント キーを使用する必要があります。このページで説明する手順では、管理クラスタの構成ファイルの privateRegistry
セクションで必要なアドレス、認証情報、CA 証明書を取得する方法について説明します。
認証情報ファイルを構成する
レジストリの認証を構成していない場合は、Docker 用に Artifact Registry への認証を構成するの手順に沿って、サービス アカウントを使用して認証を構成します。認証には、JSON 形式のキーファイルを持つサービス アカウントを使用する必要があります。
認証情報構成ファイル
admin-creds.yaml
を次の例のように作成します。username
は"_json_key"
としてください。name
フィールドには、privateRegistry.entry
フィールドに追加する値と一致する任意の値を使用できます。apiVersion: v1 kind: "CredentialFile" items: - name: "private-registry-creds" username: "_json_key" password:
レジストリのサービス アカウントの JSON キーファイルがあるディレクトリで、キーファイルに対して
cat
を実行して内容を表示させます。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
を変更することはできませんが、他の設定は変更可能なので必要に応じて更新できます。
次のコマンドを実行して、レジストリのアドレスを取得します。
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
の値を使用します。次のコマンドを実行して 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
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
: コンポーネント アクセス サービス アカウントのキー ファイルのフルパスまたは相対パス。