为什么我在部署容器时看到此错误:“错误:(gcloud.run.deploy) PERMISSION_DENIED:调用者没有权限”?

2024-04-16

假设我有一个cloudbuild.yaml文件如下所示。还假设我可以在使用时手动运行和部署有问题的容器gcloud用于单独的功能(构建和运行)。

部署的时候第三步就出现错误ERROR: (gcloud.run.deploy) PERMISSION_DENIED: The caller does not have permission

steps:
# Build the container image
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/[PROJECT_ID]/[IMAGE]:$COMMIT_SHA', '.']
# Push the image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/[PROJECT_ID]/[IMAGE]:$COMMIT_SHA']
# Deploy image to Cloud Run
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - 'run'
  - 'deploy'
  - '[SERVICE_NAME]'
  - '--image'
  - 'gcr.io/[PROJECT_ID]/[IMAGE]:$COMMIT_SHA'
  - '--region'
  - '[REGION]'
  - '--platform'
  - 'managed'
images:
- gcr.io/[PROJECT_ID]/[IMAGE]


请参阅以下位置的文档:

https://cloud.google.com/cloud-build/docs/deploying-builds/deploy-cloud-run#before_you_begin https://cloud.google.com/cloud-build/docs/deploying-builds/deploy-cloud-run#before_you_begin


您需要按照此处提供的步骤进行操作:

  1. 将 Cloud Run Admin 角色授予 Cloud Build 服务帐号:

    • 在 Cloud Console 中,进入 Cloud Build 设置页面:

    • 打开设置页面

    • 找到具有 Cloud Run 管理员角色的行,并将其状态设置为已启用。

    • 在“可能需要执行其他步骤”弹出窗口中,单击“跳过”。

  2. 将 IAM 服务账户用户角色授予 Cloud Run 运行时服务账户上的 Cloud Build 服务账户:

    • 在 Cloud Console 中,进入服务帐号页面:

    • 打开服务帐户页面

    • 在成员列表中,找到并选择 [PROJECT_NUMBER][电子邮件受保护] /cdn-cgi/l/email-protection。这是 Cloud Run 运行时服务帐户。

    • 单击右上角的显示信息面板。

    • 在“权限”面板中,单击“添加成员”按钮。

    • 在新成员字段中,输入 Cloud Build 服务帐户的电子邮件地址。这是这样的形式 [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com。 注意:Cloud Build 服务帐号的电子邮件地址与 Cloud Run 运行时服务帐号的电子邮件地址不同。

    • 在“角色”下拉列表中,选择“服务帐户”,然后选择“服务帐户用户”。

    • 单击“保存”。


就我而言,@cloudbuild 帐户没有显示在步骤 2 中的 IAM 建议中,但如果您执行步骤 1 并运行构建,错误消息将更改为类似于下面经过编辑的消息,其中包含您需要的帐户。

ERROR: (gcloud.run.deploy) User [<SOME_NUMBER_HERE>@cloudbuild.gserviceaccount.com] does not have permission to access namespace [<YOUR_PROJECT_ID>] (or it may not exist): Permission 'iam.serviceaccounts.actAs' denied on service account <SOME_OTHER_NUMBER_HERE>[email protected] /cdn-cgi/l/email-protection (or it may not exist).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我在部署容器时看到此错误:“错误:(gcloud.run.deploy) PERMISSION_DENIED:调用者没有权限”? 的相关文章

随机推荐