如何创建一个 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/