我正在尝试在群集上启用Workload Identity,但是从Pod对其进行测试时遇到以下错误:
root@workload-identity-test:/# gcloud auth list
ERROR: gcloud crashed (MetadataServerException): HTTP Error 500: Internal Server Error
If you would like to report this issue, please run the following command:
gcloud feedback
To check gcloud for common problems, please run the following command:
gcloud info --run-diagnostics
我已启用workload-metadata-from-node
:
gcloud beta container node-pools update NAME --cluster NAME --workload-metadata-from-node=GKE_METADATA_SERVER
Updating node pool main...done.
即使我在命令中添加了--log-http
,它似乎也没有显示返回500的请求(同样至关重要的是它的响应)。
有什么想法吗? (我在新群集上遇到相同的错误)
答案 0 :(得分:1)
基于运行测试的节点上gke-metadata-xxxx
窗格记录的错误,我需要使用roles/iam.serviceAccountTokenCreator
代替上面链接的教程中建议的roles/iam.workloadIdentityUser
。 / p>
这使我能够按预期使用该功能,但是由于角色为not documented,因此我不确定通过此切换可能会授予哪些附加权限。
答案 1 :(得分:1)
roles/iam.serviceAccountTokenCreator
模拟服务帐户(创建OAuth2访问令牌,签名Blob或JWT等)
和roles/roles/iam.workloadIdentityUser
模拟来自GKE Workloads的服务帐户。这两个角色均记录在here中,您可以看到每个角色具有的权限。
答案 2 :(得分:1)
我今天对此有一个问题。使用角色(roles / iam.serviceAccountTokenCreator和Roles / roles / iam.workloadIdentityUser),一切正常,并且我的Google Cloud Credentials API也已启用。
如果即使在确保满足上述所有要求后仍再次遇到此问题,请删除Kubernetes服务帐户并重新创建。您还必须重新启动正在使用服务帐户的Pod,以便他们可以获得最新的服务帐户令牌。
最后,一切都会重新开始。
答案 3 :(得分:0)
我遇到了同样的问题,但是我可以通过在控制台上启用“ IAM服务帐户凭据API”来解决。 https://console.developers.google.com/apis/api/iamcredentials.googleapis.com/overview
答案 4 :(得分:0)
所以我遇到了同样的问题,直到我意识到忘记执行注释步骤来完成绑定。
我的看法是,您需要以下内容;
<Field
label="first name"
component={Input}
name={`patients[${index}].firstName`}
/>
gcloud config set project gsa_project
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:cluster_project.svc.id.goog[k8s_namespace/ksa_name]" \
gsa_name@gsa_project.iam.gserviceaccount.com