kubernetes - 所有命名空间的 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]]"
有没有办法做到这一点?
解决方案
无法将所有命名空间设置为 Kubernetes 服务帐户 (KSA)。也许您必须获取每个命名空间并为每个命名空间进行绑定,自动化脚本可以帮助在此过程中执行 n 次(每个命名空间 1 次)。
您可以使用以下 kubectl 命令仅获取命名空间列名称:
kubectl get ns --all-namespaces --no-headers -o custom-columns=":metadata.name"
得到这样的东西:
default
kube-public
kube-system
可用于使用绑定自动化脚本对它们进行迭代。
推荐阅读
- javascript - 单击发送按钮错误 500 时添加更多接收电子邮件
- python - 如何调用嵌套循环中的值?
- php - 如何将我的 Laravel 项目 [views] 文件连接到使用 Jetstream 创建的 Route Auto?
- reactjs - 为什么在 MUI 中忽略自定义调色板?
- python - 关于深度学习中的tqdm
- javascript - 对 jupyterlab 源代码的更改没有得到反映
- python - “int”没有属性“get”
- python - 通过删除包含某些键的对象来过滤 json 文件
- android - 如何在 Android Studio 中将视图另存为图像
- sql - 为什么外键约束在“postId”列上失败?