我想重命名我的k8s Secrets
并想检查是否有未使用的Secrets
。我也想知道引用了containers
的数量和哪个Secret
。
有比在所有部署中搜索 secret 名称更简单的方法吗?
最佳答案
谢谢西蒙。根据您的回答,我创建了一个差异,该差异显示了容器env部分中未引用的secrets
。 Secrets
也可以在以下位置引用:
入口的
TLS
部分Pods
Volumes
规范,就像Simon提到的ImagePullSecrets
CRDs
定制资源定义但是对我来说,找到在环境变量中未引用的
secrets
就足够了:diff \
<(kubectl get pods -o jsonpath='{.items[*].spec.containers[*].env[*].valueFrom.secretKeyRef.name}' | xargs -n1 | sort | uniq) \
<(kubectl get secrets -o jsonpath='{.items[*].metadata.name}' | xargs -n1 | sort | uniq)
更新2018年4月16日我创建了一个更高级的版本,以查找
volumes
,ingress tls
和imagePullSecrets
中引用的 secret 。以下代码段将向您显示当前 namespace 的所有未使用的secrets
。警告:该脚本未涵盖可以引用 secret 的所有选项(例如,自定义资源定义)。
envSecrets=$(kubectl get pods -o jsonpath='{.items[*].spec.containers[*].env[*].valueFrom.secretKeyRef.name}' | xargs -n1)
volumeSecrets=$(kubectl get pods -o jsonpath='{.items[*].spec.volumes[*].secret.secretName}' | xargs -n1)
pullSecrets=$(kubectl get pods -o jsonpath='{.items[*].spec.imagePullSecrets[*].name}' | xargs -n1)
tlsSecrets=$(kubectl get ingress -o jsonpath='{.items[*].spec.tls[*].secretName}' | xargs -n1)
diff \
<(echo "$envSecrets\n$volumeSecrets\n$pullSecrets\n$tlsSecrets" | sort | uniq) \
<(kubectl get secrets -o jsonpath='{.items[*].metadata.name}' | xargs -n1 | sort | uniq)
关于kubernetes - 如何识别Kubernetes中未使用的 secret ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46406596/