我有一个 ServiceAccount,它有权在我的 GCP 项目上执行各种操作,还有一个 Jenkins 管道,它每晚运行并关闭我的一个 GKE 环境。
几天前,我开始注意到获取集群凭据时出现随机故障,而再次运行相同的管道则正常。
我有以下代码块:
gcloud auth activate-service-account --key-file=****
gcloud container clusters get-credentials integration-cluster --zone europe-west1-c --project integration-project
问题是,在失败的晚上我看到以下错误:
00:00:45 Activated service account credentials for: [[email protected]]
00:00:46 Fetching cluster endpoint and auth data.
00:00:46 ERROR: (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/integration-project/zones/europe-west1-c/clusters/integration-cluster".
就像 serviceAccount 如果缺少对项目的权限,但没有任何改变并重新运行。
这是什么原因造成的?看起来像是一个错误,但是......在哪里?我现在正在使用 Google Cloud SDK 319.0.0。
10倍
答案1
错误信息message=Required "container.clusters.get" permission(s)
意味着你的服务帐户没有container.clusters.get
权限。
根据文件了解角色部分Kubernetes Engine 角色角色roles/container.clusterViewer
并roles/container.clusterAdmin
包含此权限。
解决此问题您可以向包含权限的服务帐户角色授予权限container.clusters.get
。提供此权限的最低特权 IAM 角色是roles/container.clusterViewer
。有关更多详细信息,请查看文档了解服务帐户部分授予服务帐号访问权限。
如果您的服务帐号具有所有必需的权限您可以提交问题报告在Google 公开问题追踪或达到Google Cloud 支持。