如何列出所有资源与Secret的映射关系?求对应kubectl命令
列出Secret被资源引用的kubectl命令方案
直接用下面的kubectl命令就能输出你要的格式,涵盖常见工作负载对Secret的两种引用场景(环境变量注入、卷挂载):
kubectl get deployments,statefulsets,daemonsets --all-namespaces -o jsonpath='{range .items[*]}{.metadata.name} - {range .spec.template.spec.containers[*].envFrom[*].secretRef.name}{@}{"\n"}{end}{range .spec.template.spec.volumes[*].secret.secretName}{@}{"\n"}{end}' | grep -v '^$'
针对你的问题补充:
是的,完全可以通过YAML里的envFrom[*].secretRef.name(你提到的env.from.secret.name是简化表述)来抓取环境变量方式的Secret引用。如果只需要这部分数据,用下面的简化命令就行:
kubectl get deployments,statefulsets --all-namespaces -o jsonpath='{range .items[*]}{.metadata.name} - {range .spec.template.spec.containers[*].envFrom[*].secretRef.name}{@}{"\n"}{end}' | grep -v '^$'
注意:如果还有其他资源类型(比如CronJob)需要排查,直接在kubectl get后面加上对应的资源类型即可。
内容的提问来源于stack exchange,提问作者tooptoop4
相关产品推荐
相关产品推荐

