このページでは、ワークロード イメージを保存できる非公開 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
: コンポーネント アクセス サービス アカウント キー ファイルの完全パスまたは相対パス。