【发布时间】:2020-04-20 17:52:29
【问题描述】:
我正在努力为服务帐户启用部署到云运行。我的逻辑看起来像:
gcloud auth activate-service-account \
cloud-run-deployer@my-project.iam.gserviceaccount.com \
--key-file=my-project-123123213.json
gcloud run deploy my-project-action \
--image "gcr.io/my-project/my-project-action:dev" \
--project my-project \
--verbosity debug \
--region us-central1 \
--allow-unauthenticated \
--platform managed
这失败了:
HttpForbiddenError: HttpError accessing <https://us-central1-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/my-project/services/my-project-action?alt=json>: response: <{'status': '403', 'content-length': '126', 'x-xss-protection': '0', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'vary': 'Origin, X-Origin, Referer', 'server': 'ESF', '-content-encoding': 'gzip', 'cache-control': 'private', 'date': 'Wed, 01 Jan 2020 23:08:29 GMT', 'x-frame-options': 'SAMEORIGIN', 'alt-svc': 'quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000', 'content-type': 'application/json; charset=UTF-8'}>, content <{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
>
ERROR: (gcloud.run.deploy) PERMISSION_DENIED: The caller does not have permission
我的服务帐户已按照https://cloud.google.com/run/docs/reference/iam/roles#additional-configuration 的步骤操作。例如。它具有项目级别roles/run.admin 和roles/iam.serviceAccountUser。我也尝试为该项目提供roles/editor 或roles/owner,但结果相同。我可以在我的123213123123-compute@developer.gserviceaccount.com 用户上看到cloud-run-deployer@my-project.iam.gserviceaccount.com 是服务帐户用户。
如果我使用gcloud auth login 进行身份验证,我可以使用相同的部署命令进行部署。
使用cloud-run-deployer@my-project.iam.gserviceaccount.com 和相同的身份验证方法,我能够将新的 docker 映像推送到容器注册表,所以我认为身份验证过程有效,但是我缺少一些云运行部署的权限或某些东西。
顺便说一句,我正在从 cloud-sdk docker 映像进行部署。
【问题讨论】:
-
cloud-run-deployer@my-project.iam.gserviceaccount.com分配了哪些角色 -
您是否检查了身份验证是否正常?以
gcloud run services list为例。 -
对不起,我在其他事情上跑题了,但我会回到这个。我现在正在尝试使用 terraform 来管理我的 gcp 资源,所以我们会看看这是否有帮助。
标签: google-cloud-platform google-cloud-run