如何创建一个 Kubernetes cron 作业来删除早于 "x" 天的秘密并忽略最后 2 个版本
How to create a Kubernetes cron job that delete secrets older then "x" days age and ignore the last 2 versions
我想创建一个 kubectl
自动删除早于“x”天的机密的 cron 作业,最新的 2 个版本除外。集群中的应用程序使用这些秘密进行配置,但它们是在每次部署时创建的,需要事后清理。
您可以使用
kubectl delete secret $(kubectl get secret | awk 'match(,/[0-9]+d/) {print }')
您可以解析 JSON,就像您可以根据 xdays 的需要使用 seconds(更新 86400)和写版本的其他条件。
但是,我不认为你可以用k8s secret维护版本,如果你使用任何external secret
你可以通过修改命令来解析JSON中的版本。
kubectl get externalsecret ....
使用jq命令行解析JSON:
kubectl get secrets -o json | jq -r "[.items[] | {name: .metadata.name, startTime: .metadata.creationTimestamp | fromdate } | select(.startTime < (now | . - 86400))]" | jq -r ".[].name"
额外 :
如果您不想使用 kubectl,您可以使用 Python 或其他带有客户端库的语言,并管理秘密和 运行 将 Docker 映像放入 k8s 定时任务
客户端库:https://kubernetes.io/docs/reference/using-api/client-libraries/
我想创建一个 kubectl
自动删除早于“x”天的机密的 cron 作业,最新的 2 个版本除外。集群中的应用程序使用这些秘密进行配置,但它们是在每次部署时创建的,需要事后清理。
您可以使用
kubectl delete secret $(kubectl get secret | awk 'match(,/[0-9]+d/) {print }')
您可以解析 JSON,就像您可以根据 xdays 的需要使用 seconds(更新 86400)和写版本的其他条件。
但是,我不认为你可以用k8s secret维护版本,如果你使用任何external secret
你可以通过修改命令来解析JSON中的版本。
kubectl get externalsecret ....
使用jq命令行解析JSON:
kubectl get secrets -o json | jq -r "[.items[] | {name: .metadata.name, startTime: .metadata.creationTimestamp | fromdate } | select(.startTime < (now | . - 86400))]" | jq -r ".[].name"
额外 :
如果您不想使用 kubectl,您可以使用 Python 或其他带有客户端库的语言,并管理秘密和 运行 将 Docker 映像放入 k8s 定时任务
客户端库:https://kubernetes.io/docs/reference/using-api/client-libraries/