使用服务帐户密钥从 Gitlab CI/CD 访问 GCP Artifact Registry 中的图像

问题描述 投票:0回答:1

我正在尝试使用私有 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
...

如果有人能提供建议那就太棒了!!

谢谢!!

docker gitlab-ci google-artifact-registry
1个回答
0
投票

如此处所述: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 是存储库的区域或多区域位置 图像存储的位置。

如果您想使用凭证助手,还有更多工作要做,您需要一个自定义基础映像,如下所述:

https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#access-an-image-from-a-private-container-registry

© www.soinside.com 2019 - 2024. All rights reserved.