【发布时间】:2020-05-08 13:24:38
【问题描述】:
我们已将 CloudSQL 代理设置为我们基于 Java / Tomcat 的应用程序之一的 sidecar 容器。
以下是我们如何设置工作负载身份以使我们的应用能够通过 cloudsql 代理连接到 CloudSQL:
-
创建 Cloud IAM 服务帐号并授予其 SQL 客户端权限:
-
如下设置策略绑定:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:[PROJECT_ID].svc.id.goog[default/default]" \ [GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com -
为 GKE 服务帐号添加注释:
kubectl annotate serviceaccount \ --namespace [K8S_NAMESPACE] \ [KSA_NAME] \ iam.gke.io/gcp-service-account=[GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com -
但是当我们使用以下方法进行测试时:
kubectl run --rm -it \ --generator=run-pod/v1 \ --image google/cloud-sdk:slim \ --serviceaccount [KSA_NAME] \ --namespace [K8S_NAMESPACE] \ workload-identity-test
尽管按照on this page 的解释正确地做所有事情,仍然会导致:
Error 403: The client is not authorized to make this request., notAuthorized
【问题讨论】:
标签: google-cloud-platform google-kubernetes-engine google-cloud-iam cloud-sql-proxy