所有名称空间的GKE Workload Identity服务帐户

时间:2020-01-14 13:49:09

标签: kubernetes google-cloud-platform google-kubernetes-engine google-iam

我正在遵循guide来设置GCP的工作负载标识,并使它适用于针对默认Kubernetes命名空间配置的服务帐户,如下所示:

gcloud iam service-accounts add-iam-policy-binding \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:[PROJECT_ID].svc.id.goog[default/[KSA_NAME]]" \
  [GSA_NAME]@[PROJECT_ID].iam.gserviceaccount.com

我想知道是否有一种方法可以为所有k8s名称空间创建绑定;如下所示,其中我用*替换了默认名称空间:

--member "serviceAccount:[PROJECT_ID].svc.id.goog[*/[KSA_NAME]]"

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

无法将所有名称空间设置为Kubernetes服务帐户(KSA)。 也许您需要获取每个命名空间并为每个命名空间进行绑定,自动化脚本可以在此过程中帮助完成n次(每个命名空间1次)。

使用以下kubectl命令只能获取名称空间列名称:

kubectl get ns --all-namespaces --no-headers -o custom-columns=":metadata.name"

得到这样的东西:

default
kube-public
kube-system

可以使用绑定自动化脚本来对其进行迭代。