假设我有一个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
您需要按照此处提供的步骤进行操作:
-
将 Cloud Run Admin 角色授予 Cloud Build 服务帐号:
-
在 Cloud Console 中,进入 Cloud Build 设置页面:
-
打开设置页面
-
找到具有 Cloud Run 管理员角色的行,并将其状态设置为已启用。
-
在“可能需要执行其他步骤”弹出窗口中,单击“跳过”。
-
将 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(使用前将#替换为@)