Helmwave доверяют уже более 555 пользователей (на 02.08.2023). Многие компании перешли за этот год на helmwave в production.

Helmwave уже не тот, что был год назад.

В октябре вышел доклад про helmwave на DevOops conf, помимо доклада в закулисьях обсуждали будущее инструментов CD и планах развития helmwave.

Предлагаю перейти к обзору новых фичей, которые удалось достичь.

Закрытое окружение

Helmwave начали использовать в закрытых окружениях, поэтому появились ряд фичей для доставки планфайла на "флешке" в закрытый контур.

Для этого появилась поддержка кеширования чартов и скачивание их в план. Эту функцию полезно комбинировать с опцией "пропустить проверку на обновление зависимостей".

В diff тоже добавлено информирование, если версия чарта изменилась.

Следующая фича для закрытого окружения это offline_kube_version, в ней можно задать версию кластера. И helmwave будет строить план без интернета. Помимо этого offline_kube_versionполезен при работе с CRD.

Комбинируя эти решения. Вы можете просто скачать получившийся план на флешку и затем передать его в закрытый контур для последующего развертывания.

Хуки

Теперь модно выполнять кастомные команды внутри жизненного цикла helmwave. Для самых кастомных сценариев.

Жизненный цикл хуков
Жизненный цикл хуков

IDE поддержка

Появилась автогенерация jsonschema. Теперь ваши IDE автомагически (при наличии интернета) сами определяют что вы редактируете helmwave.yml и будут подсказывать вам поля.

Помимо этого добавлена детальная инструкция как добавить поддержку вручную.

Будем рады помощи сообщества для разработки полноценных плагинов под IntelliJ IDEA и VSCode.

pending_release_strategy

Хелм часто "забывает" снять лок. И при повторном деплое, все может развалиться. Helmwave умеет это понимать и предоставляет 3 варианта, что он будет делать в такой ситуации

  • ничего не делать (по умолчанию)

  • Снять лок командой отката к предыдущей версии релиза (рекомендуем)

  • Снять лок командой удаления релиза.

delimiter_left, delimiter_right

Валуесы могут содержать внутри себя шаблон, это опция позволяет переопределить "кавычки".

use cases:

  1. Для чарта kube-prometheus-stack очень удобно менять используемые разделители;

  2. Теперь можно выключить рендеринг валуесов, если там ничего рендерить не надо. Это также ускорит сборку плана.

depends on

Расширен сценарий использования зависимостей, сделав их тагируемыми и опциональными.

KubeDog

Кубопес теперь работает и при роллбеках (откатывании релизов). И также умеет трекать ВСЕ основные ресурсы.

post_renderer

Возможно вам будет мало gomplate и sprig, поэтому можно передать рендер другому инструменту.  Предлагаю ознакомиться заранее со статьей как использовать post_render для helm.

graph

Граф позволяет быстро посмотреть, зависимость релизов друг от друга. Теперь граф можно получить отдельной командой, а также повлиять на его косметические отображения.

Документация

Документация – это первое что открывает открывает человек, при знакомстве с новым продуктом. Поэтому требования для документации высоки.

Предупреждение, если вы вдруг смотрите старую версию

Чтобы всегда быть уверенным, что используешь пример из последней версии.

Новый quick started гайд

quick started сразу с kubedog для самых нетерпеливых.

Навигация по документации

  • Страницы шире;

  • Древовидных формат, для облегчения и структурирования;

  • Все опции. Действительно все.

Попробуйте: https://docs.helmwave.app/0.30.x/

Дополнительная информация, когда была введена фича

Чтобы видеть, ценность обновлений. И быстро понять, нужно обновляться для данной фичи или нет.

Бонус: ответы на вопросы

В ходе общения с сообщестом в нашем уютном телеграм чате собран ряд популярных вопросов, которые могут возникнуть и у читателя.

Вопрос:

Заметил что подход, когда helm используется как библиотека вместо os.Exec указывается как преимущество helmwave. В чем конкретно преимущество?

Ответ:

  1. Библиотечная имплементация  – это не просто -1 bin файл, а еще и отсутствие других зависимостей типа libc. Scratch image helmwave весит ~92 мб. Это проще кешировать. И меньше потенциальных угроз, при сканировании образа. Потому что devops должен быть прежде всего безопасным.

  2. helmwave явно идет в ногу с helm и юзает только те фишки, которые доступны в версии helm, с которой собиралось. Не надо играться с подбором версии.

  3. exec'и плохи тем, что надо постоянно экранировать все и это потенциально опасное место в любой программе. DevOps должен быть прежде всего безопасным.

  4. exec'и еще плохи тем, что там парсится stdout/stderr. Это очень ненадежный вариант взаимодействия между программами, который очень легко поломать. И еще раз, DevOps должен быть прежде всего безопасным.

  5. exec'и выполняются гораздо дольше, чем вариант helmwave.

  6. Библиотечная имплементация позволяет управлять релизами в процессе и гораздо тоньше и глубже использовать код , а не команды. Например фича 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 - это действительно помогает нам.

Комментарии (0)