我正在尝试使用私有 GCP Artifact Registry 中的图像运行 Gitlab CI 作业,即:
build job:
stage: build_job
image: toto-tata-docker.pkg.dev/my-gcp/my-project/my-image:${IMAGE_VERSION}
variables:
...
我在很多地方读过,包括在 GitLab doc 中,使用
DOCKER_AUTH_CONFIG
CI/CD 变量可以做到这一点,建议使用
docker login toto-tata-docker.pkg.dev --username my_username --password my_password
然后复制
~/.docker/config.json
中的内容。
现在我的问题是,我正在使用服务帐户来验证该 AR,并且我不知道如何找到生成“正确”所需的用户名和密码
~/.docker/config.json
.... :'(
我尝试按照 GCP 文档中的建议使用凭据助手(这实际上是当我
~/.docker/config.json
使用服务帐户密钥时我的 docker login
在笔记本电脑上的样子):
{
"credHelpers": {
"toto-tata-docker.pkg.dev": "gcloud",
}
}
但由于权限被拒绝,作业失败:
...
denied: Permission "artifactregistry.repositories.downloadArtifacts" denied on reso
...
如果有人能提供建议那就太棒了!!
谢谢!!
如此处所述:https://cloud.google.com/artifact-registry/docs/docker/authentication#json-key如果您想使用服务帐户密钥进行工件注册表,则用户名将是 KEY-根据您的文件编码键入
_json_key
或 _json_key_base64
。
cat KEY-FILE | docker login -u KEY-TYPE --password-stdin \ https://LOCATION-docker.pkg.dev
替换以下内容:
- KEY-TYPE 是以下之一: _json_key(如果您使用创建文件时提供的 JSON 格式的服务帐户密钥)。 _json_key_base64(如果您对文件的所有内容进行了 Base64 编码)。关键-
- FILE 是 JSON 格式的服务帐户密钥文件的名称。
- LOCATION 是存储库的区域或多区域位置 图像存储的位置。
如果您想使用凭证助手,还有更多工作要做,您需要一个自定义基础映像,如下所述: