gpt4 book ai didi

kubernetes - 如何识别 Kubernetes 中未使用的 secret ?

转载 作者:行者123 更新时间:2023-12-04 22:41:22 27 4
gpt4 key购买 nike

我想重命名我的 k8s Secrets并想检查是否有未使用的Secrets .我也想知道有多少和哪个containers引用 Secret .

有没有比在所有部署中搜索 secret 名称更简单的方法?

最佳答案

谢谢西蒙。根据您的回答,我创建了一个差异,显示 secrets未在容器 env 部分中引用。 Secrets也可以引用:

  • TLS入口部分
  • Pods Volumes规范,就像西蒙提到的
  • ImagePullSecrets用于私有(private)存储库
  • 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 中引用的 secret 。 , ingress tlsimagePullSecrets .以下片段将显示所有未使用的 secrets对于当前命名空间。
    注意:该脚本未涵盖可以引用 secret 的所有选项(例如自定义资源定义)。
    2021 年 6 月 15 日更新 : 添加了 Pod 容器规范中的 secret envFrom[*].secretRef.name作为 secret 来源
    envSecrets=$(kubectl get pods -o jsonpath='{.items[*].spec.containers[*].env[*].valueFrom.secretKeyRef.name}' | xargs -n1)
    envSecrets2=$(kubectl get pods -o jsonpath='{.items[*].spec.containers[*].envFrom[*].secretRef.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$envSecrets2\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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com