【发布时间】:2021-08-26 10:35:48
【问题描述】:
我有这个 cloudbuild.yaml
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args:
- 'alpha'
- 'run'
- 'deploy'
- 'backend'
- '--image=eu.gcr.io/$PROJECT_ID/backend:$BUILD_ID'
- '--concurrency=10'
- '--cpu=1'
- '--memory=512Mi'
- '--region=europe-west4'
- '--min-instances=1'
- '--max-instances=2'
- '--platform=managed'
- '--port=8080'
- '--timeout=3000'
- '--ingress=internal'
- '--vpc-connector=cloud-run'
- '--vpc-egress=private-ranges-only'
- '--set-cloudsql-instances=foo:europe-west4:bar'
如果我事先通过 Cloud Run Console (Web UI) 创建了一个服务,它就可以正常工作。但是我想要的是最初创建一个名为 xy 的服务,如果它不存在的话。
因为否则我的 CI 管道会显示此错误:
第 2 步:错误:(gcloud.alpha.run.deploy) PERMISSION_DENIED:资源“namespaces/***/services/backend”上的权限“run.services.get”被拒绝(或资源可能不存在)。
这是正确的。 services/backend 不存在。但是如果它不存在,我想创建它,并在将来简单地更新它的容器映像。我通读了有关 run 的整个 gcloud API 文档,但找不到任何东西。好像是故意漏掉的?
【问题讨论】:
-
嗨@xetra11 我能够使用您提供的 cloudbuild.yaml 文件成功构建。您是否将云运行管理员权限角色添加到云构建帐户?如果没有,请添加并重新运行云构建。
-
@Sri 部署确实适用于该 .yaml 文件,但仅如果服务已通过 GCP Console UI 手动创建一次跨度>
-
当我在 cloudbuild IAM 中删除云运行管理员权限时出现上述错误,但是当我将云运行管理员角色添加到 cloudbuild IAM 时,它能够创建新的云运行服务并且服务是否存在能够将新映像部署到该云运行服务并尝试删除 .yaml 文件中的“alpha”。
-
@Sri 评论是正确的。您有权创建服务,其他人有权在现有服务中创建修订。斯里,将此评论作为答案发表,这是一个好点!
标签: google-cloud-run