Как создать задание cron Kubernetes, которое удаляет секреты старше «x» дней и игнорирует последние 2 версии

Я хотел бы создать задание kubectl cron, которое автоматически удаляет секреты старше «x» дней, кроме последних двух версий. Приложения в кластере используют эти секреты для настройки, но они создаются при каждом развертывании и нуждаются в очистке постфактум.

Добавьте образцы своего секретного вывода и объясните, что определяет последняя 2 версия?

dahiya_boy 07.05.2022 20:26
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
1
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать

kubectl delete secret $(kubectl get secret | awk 'match($5,/[0-9]+d/) {print $1}')

Вы можете проанализировать JSON, как вы можете использовать секунды (обновление 86400) в соответствии с необходимостью xdays, и написать другие условия версий.

Однако я не думаю, что вы можете поддерживать версии с секретом k8s, если вы используете какой-либо 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 в cronjob к8с.

Клиентские библиотеки: https://kubernetes.io/docs/reference/using-api/client-libraries/

Другие вопросы по теме