Google-Cloud-Platform
使用 Deployment Manager 將 Workload Identity 服務帳戶綁定到 GKE 服務帳戶?
我已經在我們的 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 變成了這樣:
resources: - name: test-name-deploy type: iam.v1.serviceAccount properties: accountId: testing displayName: testing-sa accessControl: gcpIamPolicy: bindings: - role: roles/iam.workloadIdentityUser members: - "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]"