我已经在我们的 GKE 集群上启用了 Workload Identity。现在我正在向 GKE 部署一个应用程序,它使用 WI 对另一个 Google 服务进行身份验证。我已经使用 Deployment Manager 创建了一个有权访问 Google 服务的 IAM 服务帐户。我还使用自己的 GKE 服务帐户将应用程序部署到集群。
最后,我需要将两种不同类型的服务帐户绑定在一起。这允许 Kubernetes 服务帐户充当 Google 服务帐户,从而允许 pod 访问云服务。
该文档使用gcloud
CLI 工具添加策略绑定,如下所示:
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \
GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
当然,我想通过 GCP 部署管理器(infra-as-code 和所有这些)来完成,但我无法弄清楚正确的 DM 语法!?
我通常通过gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding
类型进行角色绑定,就像在代码示例中一样,但我不知道如何复制上述gcloud
命令,也找不到任何公共示例。请问谁能帮忙?
我认为以前actions
会使用它们,但由于它们已被弃用,我宁愿不将它们用于新代码。iamMemberBinding
似乎是推荐的方式。
事实证明,看
gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding
类型是一个红鲱鱼。相反,解决方案是使用类型的accessControl
属性iam.v1.serviceAccount
。非常感谢这个答案,它为我指明了正确的方向。总之,你的 serviceAccount 变成了这样: