首页 > 解决方案 > 所有命名空间的 GKE Workload Identity 服务帐号

问题描述

我正在按照指南设置 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]]"

有没有办法做到这一点?

标签: kubernetesgoogle-cloud-platformgoogle-kubernetes-enginegoogle-iam

解决方案


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

您可以使用以下 kubectl 命令仅获取命名空间列名称:

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

得到这样的东西:

default
kube-public
kube-system

可用于使用绑定自动化脚本对它们进行迭代。


推荐阅读