无法将Google服务账户绑定到Kubernetes服务账户。

4

我正在尝试将我的Google Service账户(GSA)与Kubernetes Service账户(KSA)绑定,以便我可以从Google Kubernetes Engine(GKE)连接到我的Cloud SQL数据库。我目前正在使用Google文档提供的以下指南(https://cloud.google.com/sql/docs/sqlserver/connect-kubernetes-engine)。

目前,我在GKE上运行了一个名为MY_CLUSTER的集群,一个具有正确Cloud SQL权限的GSA,名称为MY_GCP_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com,以及一个名为MY_K8S_SERVICE_ACCOUNT的KSA。我现在正在尝试使用以下命令将这两个账户绑定。

gcloud iam service-accounts add-iam-policy-binding \
  --member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/MY_K8S_SERVICE_ACCOUNT]" \
  --role roles/iam.workloadIdentityUser \
  MY_GCP_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com

然而,当我运行前面的命令时,我收到以下错误消息。
ERROR: Policy modification failed. For a binding with condition, run "gcloud alpha iam policies lint-condition" to identify issues in condition.
ERROR: (gcloud.iam.service-accounts.add-iam-policy-binding) INVALID_ARGUMENT: Identity Pool does not exist (PROJECT_ID.svc.id.goog). Please check that you specified a valid resource name as returned in the `name` attribute in the configuration API.

当我尝试将我的GSA绑定到我的KSA时,为什么会出现这个错误?

1个回答

3
为了将您的Google服务账号(GSA)绑定到Kubernetes服务账号(KSA),您需要在集群上启用工作负载标识。更多详细信息请参考Google文档(https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity)。
要在现有集群上启用工作负载标识,您可以运行以下命令。
gcloud container clusters update MY_CLUSTER \
  --workload-pool=PROJECT_ID.svc.id.goog

1
请注意,现有的节点需要进行回收利用。只有在启用该功能之后创建的节点才能使用工作负载身份。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接