Helmwave доверяют уже более 555 пользователей (на 02.08.2023). Многие компании перешли за этот год на helmwave в production.
![](https://habrastorage.org/getpro/habr/upload_files/0ad/273/938/0ad273938f0f1022c0ee57ff453a8522.png)
Helmwave уже не тот, что был год назад.
В октябре вышел доклад про helmwave на DevOops conf, помимо доклада в закулисьях обсуждали будущее инструментов CD и планах развития helmwave.
Предлагаю перейти к обзору новых фичей, которые удалось достичь.
Закрытое окружение
Helmwave начали использовать в закрытых окружениях, поэтому появились ряд фичей для доставки планфайла на "флешке" в закрытый контур.
Для этого появилась поддержка кеширования чартов и скачивание их в план. Эту функцию полезно комбинировать с опцией "пропустить проверку на обновление зависимостей".
В diff тоже добавлено информирование, если версия чарта изменилась.
Следующая фича для закрытого окружения это offline_kube_version
, в ней можно задать версию кластера. И helmwave будет строить план без интернета. Помимо этого offline_kube_version
полезен при работе с CRD.
Комбинируя эти решения. Вы можете просто скачать получившийся план на флешку и затем передать его в закрытый контур для последующего развертывания.
Хуки
Теперь модно выполнять кастомные команды внутри жизненного цикла helmwave. Для самых кастомных сценариев.
![Жизненный цикл хуков Жизненный цикл хуков](https://habrastorage.org/getpro/habr/upload_files/9a2/3f4/255/9a23f42555b27a4f1938b0150fd8aa93.png)
IDE поддержка
Появилась автогенерация jsonschema. Теперь ваши IDE автомагически (при наличии интернета) сами определяют что вы редактируете helmwave.yml
и будут подсказывать вам поля.
Помимо этого добавлена детальная инструкция как добавить поддержку вручную.
Будем рады помощи сообщества для разработки полноценных плагинов под IntelliJ IDEA и VSCode.
pending_release_strategy
Хелм часто "забывает" снять лок. И при повторном деплое, все может развалиться. Helmwave умеет это понимать и предоставляет 3 варианта, что он будет делать в такой ситуации
ничего не делать (по умолчанию)
Снять лок командой отката к предыдущей версии релиза (рекомендуем)
Снять лок командой удаления релиза.
delimiter_left, delimiter_right
Валуесы могут содержать внутри себя шаблон, это опция позволяет переопределить "кавычки".
use cases:
Для чарта kube-prometheus-stack очень удобно менять используемые разделители;
Теперь можно выключить рендеринг валуесов, если там ничего рендерить не надо. Это также ускорит сборку плана.
depends on
Расширен сценарий использования зависимостей, сделав их тагируемыми и опциональными.
KubeDog
Кубопес теперь работает и при роллбеках (откатывании релизов). И также умеет трекать ВСЕ основные ресурсы.
post_renderer
Возможно вам будет мало gomplate и sprig, поэтому можно передать рендер другому инструменту. Предлагаю ознакомиться заранее со статьей как использовать post_render для helm.
graph
Граф позволяет быстро посмотреть, зависимость релизов друг от друга. Теперь граф можно получить отдельной командой, а также повлиять на его косметические отображения.
Документация
Документация – это первое что открывает открывает человек, при знакомстве с новым продуктом. Поэтому требования для документации высоки.
Предупреждение, если вы вдруг смотрите старую версию
![](https://habrastorage.org/getpro/habr/upload_files/94b/1df/4a0/94b1df4a0c2266d400524b9578dc2123.png)
Чтобы всегда быть уверенным, что используешь пример из последней версии.
Новый quick started гайд
quick started сразу с kubedog для самых нетерпеливых.
Навигация по документации
Страницы шире;
Древовидных формат, для облегчения и структурирования;
Все опции. Действительно все.
Попробуйте: https://docs.helmwave.app/0.30.x/
Дополнительная информация, когда была введена фича
![](https://habrastorage.org/getpro/habr/upload_files/862/2dc/564/8622dc5640efc403138c040d7df25be7.png)
Чтобы видеть, ценность обновлений. И быстро понять, нужно обновляться для данной фичи или нет.
Бонус: ответы на вопросы
В ходе общения с сообщестом в нашем уютном телеграм чате собран ряд популярных вопросов, которые могут возникнуть и у читателя.
Вопрос:
Заметил что подход, когда helm используется как библиотека вместо
os.Exec
указывается как преимущество helmwave. В чем конкретно преимущество?
Ответ:
Библиотечная имплементация – это не просто -1 bin файл, а еще и отсутствие других зависимостей типа libc. Scratch image helmwave весит ~92 мб. Это проще кешировать. И меньше потенциальных угроз, при сканировании образа. Потому что devops должен быть прежде всего безопасным.
helmwave явно идет в ногу с helm и юзает только те фишки, которые доступны в версии helm, с которой собиралось. Не надо играться с подбором версии.
exec'и плохи тем, что надо постоянно экранировать все и это потенциально опасное место в любой программе. DevOps должен быть прежде всего безопасным.
exec'и еще плохи тем, что там парсится stdout/stderr. Это очень ненадежный вариант взаимодействия между программами, который очень легко поломать. И еще раз, DevOps должен быть прежде всего безопасным.
exec'и выполняются гораздо дольше, чем вариант helmwave.
Библиотечная имплементация позволяет управлять релизами в процессе и гораздо тоньше и глубже использовать код , а не команды. Например фича helmwave
pending_release_strategy
, одна из таких. Это дает возможность управлять всем в процессе, а не ждать stdout/stderr.
Вопрос:
Так как в helmwave уже вкомпилен helm, то я боюсь за консистентность версий helm'a.
Ответ:
Проблема в когнитивных искажениях. Давайте попробуем ответить на встречный вопрос для helm'a.
А почему вы не боитесь что вкомпиленный в helm kubectl будет не той версии?
Почему вы не боитесь когда видите что там обновили kubectl до 1.27 а у вас класстер 1.17?
Helm – это стандарт. Helm library - тоже стандарт, и от них же.
Сообщество также подсказало раскрыть мотивацию в документации. И подробнее рассказать о стратегических преимуществах helmwave над аналогичными проектами.
Заключение
В конце как обычно приглашаю в наш телеграм чат https://t.me/helmwave. Будем благодарны за звездочку на гитхабе https://github.com/helmwave/helmwave - это действительно помогает нам.
![](https://habrastorage.org/getpro/habr/upload_files/02e/6ac/03f/02e6ac03f8c1544816d5dd6282c7103c.png)