如何解决无法使用其他项目中的映像部署 Cloud Run 服务
尝试使用来自同一组织的另一个项目的映像部署 Cloud Run 服务时出现此错误。
" Google Cloud Run Service Agent 必须有读取镜像的权限,gcr.io/my-builds/consultoriaweb@sha256:8c655b2bab..... 确保提供的容器镜像 URL 是正确的,并且上面的账户有权限访问图像。如果您刚刚启用了 Cloud Run API,则权限可能需要几分钟才能传播。请注意,该图像来自项目 [my-builds],与该项目 [my-webapp] 不同。必须从此项目向 Google Cloud Run 服务代理授予权限。 “
我正在使用 Google 控制台网络界面从容器注册表中选择要在 my-builds 项目上部署的映像。
已经为 [my-builds] 项目添加了 IAM 权限,两个都试过了:
[my-webapp-project-number]-compute@developer.gserviceaccount.com => 角色计算镜像用户
[my-webapp-project-number]@cloudservices.gserviceaccount.com => 角色计算镜像用户
Google 文档说我应该给 roles/compute.imageUser 角色:
[my-webapp-project-number]@cloudservices.gserviceaccount.com 在 my-builds 项目上,但我无法让它工作。 >
使用来自其他项目的图像的 Google 文档,但我不知道它是否适用于 Cloud Run。 https://cloud.google.com/deployment-manager/docs/configuration/using-images-from-other-projects-for-vm-instances#granting_access_to_images
在此先感谢您的帮助
解决方法
谢谢。开始工作!
我发现了许多关于设置云运行权限以从其他项目中提取容器映像的不同资源/文档。所以我进行了测试以发现真正需要的那个:
对于 Artifacty Registry:
- 成员:
- serviceAccount:service-@serverless-robot-prod.iam.gserviceaccount.com 角色:roles/artifactregistry.reader
对于容器注册:
- 成员:
- serviceAccount:service-@serverless-robot-prod.iam.gserviceaccount.com 角色:roles/storage.objectViewer
再次感谢。
,你混合了不同的东西。容器映像不是 Compute Engine 启动磁盘映像。
因此,您需要授予 Cloud Run 服务代理服务帐号访问其他项目的映像的权限。您可以找到 the documentation here 以授予对 GCR 映像的访问权限。
然后您需要获取具有此模式的 Cloud Run 服务代理服务帐户
service-<projectNumber>@serverless-robot-prod.iam.gserviceaccount.com
两者结合,即可进入托管容器镜像的项目控制台;进入 IAM 页面,点击添加
- 将 Cloud Run Service 代理服务帐户添加为成员
- 授予角色:存储对象查看器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。