Шлем сбрасывает ресурсы в заведомо исправное состояние
Мы начинаем управлять ресурсами Kubernetes с помощью Helm, и у нас есть несколько пользователей, которые привыкли управлять ресурсами с помощью kubectl edit
, Мы бы хотели, чтобы Helm проводил дезинфекцию развернутых ресурсов при каждом запуске, возвращая их в заведомо исправное состояние.
Я заметил, что helm upgrade
не перезаписывает мои ConfigMaps. Вместо этого он объединяет атрибуты между развернутым ConfigMap и шаблоном Helm, давая мне фрагменты моего шаблонного ConfigMap и фрагменты отредактированного вручную. Если в шаблоне Helm ConfigMap не было никаких изменений, Helm не возвращает любую часть моего развернутого ConfigMap обратно в рабочее состояние.
Как я могу дать Helm команду всегда переустанавливать весь ресурс Kubernetes на версии Helm?
0 ответов
Это не является целью дизайна Helm и остается им. В компетенцию Helm не входит манипулирование объектами, которые не были созданы Helm, или игнорирование внеполосных изменений объектов, находящихся под его "контролем" - это функция, которая делает Helm совместимым с другими системами, которые могут изменять манифесты, и делает Helm безопасным в использовании. Помните, что это система рендеринга YAML, а не система управления конфигурацией, такая как Puppet или SaltStack. Он не "навязывает" конфигурации.
Если вы хотите добиться описанного вами поведения, вы можете удалить соответствующие объекты перед их воссозданием с помощью Helm. Вы можете потенциально использовать пространства имен Kubernetes для надежного выполнения этой задачи, предоставив каждой диаграмме свое собственное пространство имен и удалив пространство имен перед установкой диаграммы в виде "полной перезагрузки".
Или оставьте тех пользователей, которые привыкли редактировать манифесты, с помощью
kubectl
от этого и вместо этого направьте их на внесение этих изменений в диаграммы или значения. Не представляется разумным отказываться от их изменений, если они были необходимы - именно поэтому Helm с самого начала выполняет трехсторонние операции слияния с манифестами. Я понимаю желание сохранить конфигурацию в единой точке оркестровки, но не ожидаю, что смогу добиться этого, не используя единую точку оркестровки.
Эта проблема постоянно возникает при применении практик оркестровки более высокого уровня к командам, которые привыкли к методам оркестровки более низкого уровня, и никоим образом концептуально не ограничивается Helm. Helm хорошо справляется с ситуацией, выполняя операции слияния, но приводит к функционированию беспорядка методологий оркестрации (по крайней мере, он не ломает вещи или просто не дает сбоев). Начните с того, что не создавайте беспорядка или ограничивайте беспорядок чистой средой и переносите его в диаграммы Helm для производства.