Нельзя напрямую обновить приложение через Helm, если изначально оно было установлено с помощью kubectl apply, не удаляя при этом приложение. Причина в том, что Helm управляет ресурсами через собственный механизм релизов и хранит состояние в ConfigMap или Secret внутри кластера. Если ресурсы созданы вручную (kubectl apply), Helm не знает о них и не может ими управлять.
В чём принципиальная разница между деплоем через kubectl и через Helm? Что лучше?
Нельзя напрямую обновить приложение через Helm, если изначально оно было установлено с помощью kubectl apply, не удаляя при этом приложение.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Нельзя напрямую обновить приложение через Helm, если изначально оно было установлено с помощью kubectl apply, не удаляя при этом приложение. Причина в том, что Helm управляет ресурсами через собственный механизм релизов и хранит состояние в ConfigMap или Secret внутри кластера. Если ресурсы созданы вручную (kubectl apply), Helm не знает о них и не может ими управлять.
Чтобы перейти на управление Helm без удаления приложения, можно:
- Создать Helm-чарт, который описывает текущее состояние приложения.
- Использовать
helm import(если доступно) или вручную синхронизировать ресурсы с Helm. - Либо удалить ресурсы, созданные вручную, и затем установить приложение через Helm.
В общем случае, для корректного управления и обновления через Helm рекомендуется изначально устанавливать приложение с помощью Helm.