如何 "create" 新的 Cloud 运行 服务(不将容器部署到现有容器)

How to "create" a new Cloud Run service (not deploying a container to an existing one)

我有这个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'

如果我事先通过云 运行 控制台(Web UI)创建了一个服务,它就可以正常工作。但是我想要的是最初创建一个名为 xy 的服务,如果它不存在的话。

因为我的 CI 管道显示此错误:

Step #2: ERROR: (gcloud.alpha.run.deploy) PERMISSION_DENIED: Permission 'run.services.get' denied on resource 'namespaces/***/services/backend' (or resource may not exist).

这是正确的。 services/backend 不存在。但如果它不存在,我想创建它,并在将来简单地更新它的容器图像。我通读了有关 run 的整个 gcloud API 文档,但找不到任何内容。好像是故意漏掉的?

我在 cloudbuild IAM 中删除 cloud 运行 管理员权限时出现上述错误,但是当我将 Cloud 运行 管理员角色添加到 cloudbuild IAM 时,它能够创建一个新的 Cloud 运行 服务,如果服务存在,它能够将新映像部署到该云 运行 服务。

此外,尝试删除 .yaml 文件中的 'alpha'。