Nelm против Helm 4: анализ обновлений и преимуществ Nelm в новой версии конкурента
Краткое резюме
В новой версии Helm 4 используется Server-Side Apply вместо 3-Way Merge для решения проблем с некорректным обновлением ресурсов. Nelm остаётся более эффективной альтернативой из-за быстрого темпа разработки и решения давних проблем Helm.
Недавно была представлена новая версия Helm — Helm 4. Это событие даёт возможность вновь провести сравнение с альтернативным решением — Nelm. В этой статье мы рассмотрим нововведения в обоих проектах, подробно обсудим их различия и обозначим дальнейшие планы для Nelm.
**Изменения в Helm 4**
В новой версии Helm 4 основное изменение, которое будет интересно пользователям, касается решения проблем с некорректным обновлением ресурсов. Теперь используется Server-Side Apply вместо 3-Way Merge. Остальные обновления в основном направлены на устранение технического долга.
Несмотря на значимость внедрения SSA, ожидания от Helm 4 были выше. Пользователи хотели увидеть альтернативу Go-шаблонам и улучшения в работе с Custom Resource Definition, но эти изменения пока не запланированы.
Полный перечень обновлений можно найти в нашем обзоре Helm 4.
**Перспективы развития Helm**
Перед выпуском Helm 4 темп разработки ускорился, но после релиза он, вероятно, снова замедлится. По-прежнему существуют системные проблемы: долгие процессы согласования через Helm Improvement Proposals (HIP), высокие требования к обратной совместимости, значительный объём технического долга в кодовой базе и нехватка участников-контрибьюторов.
Основываясь на текущем опыте, можно предположить, что в ближайшие годы в Helm 4 будут вноситься лишь небольшие функции и исправления ошибок, как это было в Helm 3. Любые значительные изменения, скорее всего, появятся только в следующем крупном релизе Helm.
**Что такое Nelm**
Nelm представляет собой современную альтернативу Helm 4, уделяя особое внимание обратной совместимости с Helm-чартами и Helm-релизами. Nelm выполняет те же задачи, что и Helm, но делает это более эффективно.
Nelm был разработан во «Фланте» в ответ на медленный темп разработки, сложности с внедрением изменений и игнорирование давних проблем в Helm. Хотя часть кодовой базы Helm используется, наиболее проблемные компоненты, особенно связанные с развёртыванием, были переписаны с нуля.
**Отличия Nelm от Helm 4**
С выходом нового релиза Helm достиг уровня поддержки Server-Side Apply, аналогичного Nelm. Однако Nelm также продвинулся вперёд, добавив настройку жизненного цикла ресурсов через аннотации werf.io/delete-policy, werf.io/ownership, werf.io/deploy-on.
Рассмотрим основные отличия Nelm от Helm 4:
1. **Полноценный выкат CRD**.
В Helm рекомендуется размещать CRD в директории crds чарта. Однако ресурсы из этой директории не обновляются и выкатываются только при первой установке релиза. При последующих «helm upgrade» директория crds даже не читается.
В Nelm достаточно просто поместить CRD в директорию crds. Выкат из неё реализован полноценно: CRD могут обновляться и выкатываться при последующих upgrade’ах релиза.
2. **Задание порядка выката**.
В Helm для задания порядка выката обычно используют Helm-хуки.