我试图将我的Google服务帐户(GSA)绑定到我的Kubernetes服务帐户(KSA),这样我就可以从Google Kubernetes引擎(GKE)连接到我的Cloud SQL数据库。我目前正在使用谷歌文档(https://cloud.google.com/sql/docs/sqlserver/connect-kubernetes-engine)中提供的遵循指南。
目前,我有一个名为MY_CLUSTER
的GKE集群,一个名为MY_GCP_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com
的GSA具有正确的云SQL权限,以及一个名为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时,为什么我得到此错误?
为了将你的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