Google-Cloud-Platform

使用 Deployment Manager 將 Workload Identity 服務帳戶綁定到 GKE 服務帳戶?

  • April 10, 2021

我已經在我們的 GKE 集群上啟用了 Workload Identity。現在我正在向 GKE 部署一個應用程序,它使用 WI 對另一個 Google 服務進行身份驗證。我已經使用 Deployment Manager 創建了一個有權訪問 Google 服務的 IAM 服務帳戶。我還使用自己的 GKE 服務帳戶將應用程序部署到集群。

最後,我需要將兩種不同類型的服務帳戶綁定在一起。這允許 Kubernetes 服務帳戶充當 Google 服務帳戶,從而允許 pod 訪問云服務。

文件使用gcloudCLI 工具添加策略綁定,如下所示:

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]"

引用自:https://serverfault.com/questions/1059794