sas*_*_bg 2 docker gcloud google-cloud-run
我有一个父项目,其中为 docker 配置了工件注册表。
子项目有一个云运行服务,需要从父项目中提取其映像。
子项目还有一个服务账户,该账户有权通过 IAM 角色Roles/artifactregistry.writer访问存储库。
当我尝试启动服务时,我收到一条错误消息:
Google Cloud Run Service Agent 必须有权读取映像 europe-west1-docker.pkg.dev/test-parent-project/docker-webank-private/node:custom-1。确保提供的容器镜像 URL 正确,并且上述帐户有访问该镜像的权限。如果您刚刚启用 Cloud Run API,则权限可能需要几分钟才能传播。请注意,该图像来自项目 [test-parent-project],与此项目 [test-child-project] 不同。必须从此项目向 Google Cloud Run 服务代理授予权限。
我已经测试过使用docker 登录并使用服务帐户的私钥手动连接,并且docker pull命令在我的电脑上完美运行。
cat $GOOGLE_APPLICATION_CREDENTIALS | docker login -u _json_key --password-stdin https://europe-west1-docker.pkg.dev
> Login succeeded
docker pull europe-west1-docker.pkg.dev/bfb-cicd-inno0/docker-webank-private/node:custom-1
> OK
Run Code Online (Sandbox Code Playgroud)
该服务帐户还附加到云运行服务:
您在 Cloud Run 中使用了 2 种类型的服务帐号:
在您的解释和屏幕截图中,您讨论了运行时服务帐户,即服务运行并调用 Google Cloud API 时将使用的身份。
但在运行之前,必须部署该服务。这次,它是一个 Google Cloud Run 内部流程,用于拉取容器、创建修订版本并执行所有必需的内部操作。为了完成这项工作,还存在一个服务帐户,它被命名为“服务代理”。
在IAM控制台中可以找到:格式如下
service-<PROJECT_NUMBER>@serverless-robot-prod.iam.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)
不要忘记勾选右上角的复选框以包含 Google 托管服务帐户

如果您希望此部署服务帐户能够在另一个项目中提取映像,请为其授予正确的权限,而不是为运行时服务帐户授予正确的权限。
| 归档时间: |
|
| 查看次数: |
4723 次 |
| 最近记录: |