[英]Unable to deploy a Cloud Run Service using an image from another project
尝试使用同一组织中另一个项目的映像部署 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 控制台 web 界面选择要从我的构建项目上的容器注册表部署的映像。
已经在 [my-builds] 项目上添加了 IAM 权限,尝试了两种方法:
[my-webapp-project-number]-compute@developer.gserviceaccount.com => 角色计算图像用户
[my-webapp-project-number]@cloudservices.gserviceaccount.com => 角色计算图像用户
谷歌文档说我应该将 roles/compute.imageUser 角色赋予:
[my-webapp-project-number]@cloudservices.gserviceaccount.com在我的构建项目上,但我无法让它工作。
Google 文档使用来自其他项目的图像,但我不知道它是否适用于 Cloud Run。 https://cloud.google.com/deployment-manager/docs/configuration/using-images-from-other-projects-for-vm-instances#granting_access_to_images
在此先感谢您对此的任何帮助
你混合了不同的东西。 容器映像不是 Compute Engine 启动磁盘映像。
因此,您需要授予 Cloud Run 服务代理服务帐号以访问您的其他项目的映像。 您可以在此处找到文档以授予对 GCR 图像的访问权限。
然后您需要获取具有此模式的 Cloud Run 服务代理服务帐户
service-<projectNumber>@serverless-robot-prod.iam.gserviceaccount.com
两者结合,你可以 go 到托管容器镜像的项目的控制台; go 到IAM页面,点击添加
谢谢你。 让它工作!
我发现了许多关于设置云运行权限以从其他项目中提取容器图像的不同资源/文档。 因此,我进行了测试以发现真正需要的:
对于工件注册表:
对于容器注册表:
再次感谢你。
今天我的一个项目遇到了同样的错误,我找到了官方文档并想在这里分享这些步骤。
(You should find the account from this page because the project-number is not the project-id.)
Storage -> Storage Object Viewer
。 如果你使用 Artifact Registry,select 角色Artifact Registry -> Artifact Registry
Reader。您可以从这里关注官方文档
要回答@mzafer,这里是我用来执行此操作的 Terraform 代码:
resource "google_project_iam_member" "run_gcr" {
project = local.build_project
role = "roles/storage.objectViewer"
member = "serviceAccount:service-${google_project.main.number}@serverless-robot-prod.iam.gserviceaccount.com"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.