Шлем сбрасывает ресурсы в заведомо исправное состояние

Мы начинаем управлять ресурсами 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 для производства.

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