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

Мы начинаем управлять ресурсами Kubernetes с помощью Helm, и у нас есть несколько пользователей, которые привыкли управлять ресурсами с помощью kubectl edit . Мы бы хотели, чтобы Helm очищал развернутые ресурсы каждый раз при запуске, возвращая их в заведомо исправное состояние.

Я заметил, что обновление руля не перезаписывает мои ConfigMaps. Вместо этого он объединяет атрибуты между развернутым ConfigMap и шаблоном Helm, давая мне части моей шаблонной ConfigMap и части отредактированной вручную. Если в шаблоне Helm ConfigMap не было изменений, Helm не не сбрасывает какую-либо часть развернутой моей карты ConfigMap в исходное состояние.

Как я могу указать Helm всегда сбрасывать весь мой ресурс Kubernetes до версий с шаблоном Helm?

2
задан 5 September 2018 в 22:35
1 ответ

Это не цель разработки Helm и по-прежнему таковой не является. В компетенцию Helm не входит манипулирование объектами, которые не были созданы Helm, или игнорирование внеплановых изменений объектов, находящихся под его «контролем» — это функция, которая делает Helm совместимым с другими системами, которые могут изменять манифесты, и делает Helm безопасным в использовании. Помните, что это система рендеринга YAML, а не система управления конфигурацией, такая как Puppet или SaltStack. Он не «применяет» конфигурации.

Если вы хотите добиться описанного вами поведения, вы можете удалить рассматриваемые объекты перед тем, как воссоздать их с помощью Helm. Потенциально вы можете использовать пространства имен Kubernetes, чтобы надежно выполнить это, предоставив каждой диаграмме собственное пространство имен и удалив пространство имен перед установкой диаграммы в качестве формы «аппаратного сброса».

Или запретить пользователям, которые привыкли редактировать манифесты с помощью kubectl, делать это, а вместо этого направить их на внесение этих изменений в диаграммы или значения. Кажется неразумным отбрасывать их изменения, если их нужно было сделать — именно поэтому Helm для начала выполняет трехсторонние операции слияния с манифестами. Я понимаю желание сохранить конфигурацию в единой точке согласования, но не рассчитывайте добиться этого, не используя единую точку согласования.

Эта проблема постоянно возникает при применении методов оркестровки более высокого уровня к командам, которые привыкли к методам оркестровки более низкого уровня, и никоим образом не ограничивается Helm концептуально. Helm умеет изящно справляться с ситуацией, выполняя операции слияния, но в результате получается беспорядок в методологиях оркестровки (по крайней мере, он ничего не ломает или просто не дает сбоев). Начните с того, что не устраивайте беспорядок или ограничьте беспорядок чистой средой и соберите его в диаграммы Helm для производства.

0
ответ дан 24 September 2020 в 21:32

Теги

Похожие вопросы