本页介绍了如何配置 Google Distributed Cloud for VMware(纯软件)管理员集群,以使用 Google 的 Artifact Registry 作为私有 Docker 注册表,在其中存储工作负载映像。当您配置私有注册表来存储工作负载映像时,在您创建或升级集群时,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
:组件访问服务账号密钥文件的完整路径或相对路径。