在terraform谷歌kubernetes引擎中得到错误

f3temu5u  于 2023-01-16  发布在  Kubernetes
关注(0)|答案(3)|浏览(126)

我尝试使用“~〉7.3”版本的terraform-google-modules/kubernetes-engine/google//modules/beta-private-cluster模块在europe-west2区域创建一个集群,但我一直收到错误:

Error: googleapi: Error 403: Google Compute Engine: Required 'compute.regions.get' 
permission for 'projects/***/regions/europe-west2'., forbidden

奇怪的是,我尝试使用Editor角色的用户来做这件事。所以,它应该有读取区域的权限。我尝试为用户添加更多的角色(使其成为所有类型的管理员),但结果仍然是一样的。你能给我建议吗,我的错误在哪里?

h4cxqtbf

h4cxqtbf1#

请检查您的[id]@cloudservices.gserviceaccount.com服务帐户是否具有编辑者角色。
使用gcloud projects get-iam-policy [project-id]命令列出所有服务帐户并查找该帐户。它应类似于以下内容:

- members:
  - serviceAccount:67993345594-compute@developer.gserviceaccount.com
  - serviceAccount:679934532594@cloudservices.gserviceaccount.com
  - serviceAccount:service-674567382594@containerregistry.iam.gserviceaccount.com
  - serviceAccount:test2-468@asdf.iam.gserviceaccount.com
  - serviceAccount:asdf@appspot.gserviceaccount.com
  role: roles/editor

从顶部数第二个是您要查找的帐户,底部一行显示“角色/编辑器”,这是正确的情况。
如果此帐户没有此角色,您可以使用命令授予它:

gcloud projects add-iam-policy-binding [project] / 
--member serviceAccount:[id]@cloudservices.gserviceaccount.com --role roles/editor

文档里都有描述。
在StackOverflow herehere上讨论了非常相似的问题。

gzszwxb4

gzszwxb42#

我设法解决了这个问题。看起来我的供应者丢弃了一些角色,这些角色是GKE正常工作所必需的。特别是,

  • serviceAccount:service-${project-number}@compute-system.iam.gserviceaccount.com必须是roles/compute.serviceAgent
  • serviceAccount:service-${project-number}@container-engine-robot.iam.gserviceaccount.com必须是roles/compute.serviceAgent

发现我禁用了Kubernetes引擎服务,并启用它回来,谷歌云自动恢复该服务帐户所需的角色.

ojsjcaue

ojsjcaue3#

我在gcloud中切换帐户后遇到了同样的问题。
我通过运行

gcloud auth application-default login

它设置Packer/Terraform调用Google API的应用程序默认凭据。
来源:https://cloud.google.com/sdk/gcloud/reference/auth/application-default

相关问题