云 运行 在第 2 步部署时失败并出现权限错误

Cloud Run Fails on Step-2 Deploy with Permissions Error

我正忙于让 Cloud 运行 正常工作。我正在使用 Cloud Build 触发器从 GCP 控制台创建一个新服务到我的 Github 存储库。在安全选项卡下,我将服务帐户设置为我的服务帐户之一,它具有以下权限:

  1. 云构建服务帐户
  2. 云运行管理员
  3. 云运行服务代理
  4. Cloud Scheduler 服务代理
  5. 服务帐户用户

当我创建服务时,它总是以以下错误结束:

Step #2 - "Deploy": ERROR: (gcloud.run.services.update) PERMISSION_DENIED: Permission 'run.services.get' denied on resource 'namespaces/project/services/cloud_run_service_name' (or resource may not exist).

我不明白为什么会出现此错误。服务帐户具有 Cloud Run documentation 中列出的所有权限。有什么想法吗?

由于您使用 Cloud Build 来部署 Cloud 运行 服务,因此 Cloud Build 服务帐户必须对 Cloud 运行 具有适当的权限。您只是指定要将权限添加到“我的一个服务帐户”,但它必须是 Cloud Build 使用的帐户。您收到的错误表明 Cloud Build 服务帐户没有正确的权限,因此您必须为错误的帐户设置权限。

您应该将角色 Cloud 运行 Admin (roles/run.admin) 添加到 Cloud Build 使用的服务帐户。

我发现问题出在哪里了。我假设我应该从 Cloud 运行 设置所有内容,包括我的 Cloud Build 触发器,因为 Cloud 运行 接口提供了该功能。从云端设置 Cloud Build 触发器 运行 没有考虑应该控制触发器的服务帐户。

解决方案是从 Cloud Build 开始,我可以在其中为触发器指定服务帐户并使用 cloudbuild.yaml 来控制部署到云 运行 服务。