本文档介绍了如何为 Artifact Registry 远程代码库的 Docker Hub 上游代码库配置身份验证。
为防止使用未经身份验证的 Docker Hub 配额,我们建议您在使用远程代码库时向 Docker Hub 进行身份验证。使用远程代码库,您可以添加 Docker Hub 用户名和以密钥形式保存的个人访问令牌,以便向 Docker Hub 进行身份验证。
本文档假定您已创建 Artifact Registry Docker 远程代码库和 Docker Hub 帐号。
如需详细了解远程代码库,请参阅远程代码库概览。
准备工作
-
登录您的 Google 账号。
如果您还没有 Google 账号,请注册新账号。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 Artifact Registry, Secret Manager API。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
启用 Artifact Registry, Secret Manager API。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
所需的角色
如需获取为远程代码库配置 Docker Hub 身份验证所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
Artifact Registry Admin (
roles/artifactregistry.admin
) -
Secret Manager Admin (
roles/secretmanager.admin
)
如需详细了解如何授予角色,请参阅管理访问权限。
创建 Docker Hub 个人访问令牌
- 登录 Docker Hub。
- 创建具有只读权限的个人访问令牌。
复制访问令牌。
在本地或 Cloud Shell 中以文本文件的形式保存访问令牌。
将您的个人访问令牌保存为 Secret 版本
向 Artifact Registry 服务帐号授予对密钥的访问权限
Artifact Registry 服务代理是由 Google 代管式服务帐号,在与 Google Cloud 服务交互时代表 Artifact Registry。如需允许服务代理使用存储在 Secret Manager 中的 Secret,您必须向其授予查看您的 Secret 版本的权限。
服务代理标识符为:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER 是运行 Artifact Registry 的 Google Cloud 项目的编号。
如需向 Artifact Registry 服务代理授予 Secret Manager Secret Accessor 角色,请执行以下操作:
控制台
-
转到 Google Cloud 控制台中的 Secret Manager 页面。
-
在 Secret Manager 页面上,点击 Secret 名称旁边的复选框。
-
如果面板尚未打开,请点击显示信息面板以打开面板。
-
在信息面板中,点击添加主账号。
-
在新主账号文本区域中,输入要添加的成员的电子邮件地址。
-
在选择角色下拉列表中,选择 Secret Manager,然后选择 Secret Manager Secret Accessor。
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
其中,member 是 IAM 成员,例如用户、群组或服务账号。
C#
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需向 Artifact Registry 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
API
注意:与其他示例不同,它将替换整个 IAM 政策。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
如需详细了解如何授予或撤消对 Secret 的访问权限,请参阅管理对 Secret 的访问权限。
将 Docker Hub 凭据添加到远程仓库
如需使用 Docker Hub 凭据更新远程代码库,请执行以下操作:
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,选择代码库,然后点击修改代码库。
在远程代码库身份验证模式部分中,更新或添加包含 Docker Hub 访问令牌的 Docker Hub 用户名和密钥。
gcloud CLI
如需使用 Docker Hub 凭据更新远程代码库,请运行以下命令:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USERNAME \
--remote-password-secret-version=projects/PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
替换以下内容:
后续步骤
- 详细了解 Artifact Registry 代码库。
- 使用 Docker 拉取映像。
- 查看 Docker Hub 远程代码库quickstart。