无Secrets权限无法执行helm list?如何无需该权限列出Helm Releases
问题解答
Helm 3默认将Release元数据存储在Secrets中(命名格式为sh.helm.release.v1.<release-name>.v<version>),执行helm list时,CLI需要读取这些Secrets来获取Release列表——这就是为什么你会收到Secrets权限不足的报错,哪怕你没显式请求查看Secrets,Helm底层也依赖它来获取Release信息。
无需Secrets权限列出Release的可行方法:
1. 切换Helm存储后端到ConfigMaps
将Helm的Release元数据存储改为ConfigMaps,这样helm list只需要ConfigMaps的读取权限,无需Secrets权限。
- 临时生效:执行
helm list时指定存储后端:helm list --storage=configmap - 永久生效:修改Helm全局配置文件(
~/.config/helm/helm.yaml),添加以下配置:storage: configmap
注意:该设置仅对新安装的Release生效,已存在的Release仍存储在Secrets中,若要查看这些旧Release,仍需对应Secrets权限,或手动迁移元数据。
2. 授予最小化Secrets权限(不切换存储的情况下)
如果无法切换存储后端,可以给developer用户授予仅查看Helm相关Secrets的权限,而非所有Secrets的权限。创建以下Role和RoleBinding:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: <你的命名空间> name: helm-release-reader rules: - apiGroups: [""] resources: ["secrets"] verbs: ["list", "get"] resourceNames: - "sh.helm.release.v1.*" --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: <你的命名空间> name: helm-release-reader-binding subjects: - kind: User name: developer apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: helm-release-reader apiGroup: rbac.authorization.k8s.io
应用该配置后,developer用户只能访问Helm生成的Release Secrets,无法查看其他Secrets。
内容的提问来源于stack exchange,提问作者Kludge
相关产品推荐
相关产品推荐

