Используя полный декларативный подход в Kubernetes

Мы можем использовать декларативный подход для создания и обновления ресурсов kubernetes, используя kubectl apply -f Как мы можем сделать то же самое для переработки ресурсов, которые больше не нужны.

я использовал kubectl delete, но это выглядит как необходимость, и иногда нам нужно будет удалять вещи в правильном порядке.

Есть ли способ всегда использовать kubectl apply и он сам определяет, какие ресурсы оставить, а какие удалить. Прямо как в Terraform,

Или мы должны сделать вывод, что в настоящее время декларативный подход работает только для создания и обновления ресурсов.

Случай использования:

Например, мы решили не предоставлять API-интерфейс K8S конечным пользователям, а вместо этого предоставить им хранилище, в котором они хранят и обновляют свои файлы yaml, которые бот может применять к кластеру при каждом обновлении при объединении запроса на извлечение. Так что нам нужно это декларативное удаление, чтобы нам не приходилось убирать вещи после пользователей. Terraform Поставщик может быть решением, но в этом случае все будет зависеть от терраформирования, и пользователям потребуется изучить еще один инструмент вместо использования собственного формата k8s.

1 ответ

Решение

Обрезает, что они добавили декларативный подход для сокращения ресурсов, которые больше не присутствуют в манифестах yaml:

kubectl apply -f <directory/> --prune -l your=label

Слишком много предостережений, хотя.

В качестве альтернативы kubectl delete вы можете использовать kubectl apply для определения объектов, которые будут удалены после удаления их файлов конфигурации из каталога. Применить с помощью --prune запрашивает у сервера API все объекты, соответствующие набору меток, и пытается сопоставить возвращенные конфигурации живых объектов с файлами конфигурации объектов. Если объект соответствует запросу, и у него нет файла конфигурации в каталоге, и он имеет аннотацию последней примененной конфигурации, он удаляется.

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