Всем DevOps! 🖖
Сегодня — про Helm и инструменты для работы с ним.
Немного теории
Для начала вспомним, что это вообще такое.
Helm — это пакетный менеджер, который позволяет вам работать с приложениями в K8s так-же просто и удобно, как с привычным пакетным менеджером, например apt или yum, помогает доставлять одно и то же приложение в разные окружения с различными параметрами и позволяет легко и удобно управлять жизненным циклом приложения. На практике является одним из самых распространённых и простых способов релиза приложений в куб.
Для получения манифестов k8s в Helm используется go-templates. Это мощный и удобный инструмент, позволяющий реализовывать очень много интересных вещей и обладающий гибкой логикой.
Для работы с чартами используются артефакт хабы. Осуществлять поиск и установку нужной версии очень легко. Если публичные чарты вам не подходят, вы можете использовать свой собственный регистри хаб или чей то ещё. Некоторые дистрибутивы k8s (OS, OKD, Rancher) вообще предоставляют для данного функционала GUI из коробки, позволяя работать с Helm максимально удобным способом.
При установке приложения через Helm создаётся релиз. Релиз Helm — это полноценное состояние приложения, включая его конфигурации и переменные окружения (если они хранятся в k8s). Переключаясь между релизами Helm, например, откатывая релиз, вы также получаете именно те параметры, с которыми было запущено приложение, в отличие, например, от переключения между версиями репликасетов в деплойменте.
В Helm есть хуки. Это очень удобный инструмент, который позволяет вам выполнить какой-либо джоб до того, как будет выполнено обновление других манифестов k8s. Например, если у вас приложение состоит из деплоймента и кронджобов, а миграция БД выполняется в init-контейнере, вы не застрахованы от ситуации, когда миграция ещё не завершилась, а кроны с новым кодом уже падают, из-за того, что версия БД еще старая. Хук в данном случае решает задачу.
Удобно реализована работа с зависимостями. Параметры запуска зависимости настраиваются точно так же, как и само приложение: всё что вам нужно — добавить зависимость в описание чарта, а её параметры — в файл values.
У Helm большое комьюнити, и практически все open-source проекты имеют свой собственный чарт. Вам ничто не помешает скачать любой чарт, и локально поменять в нём всё что угодно.
Если для деплоя вы используете манифесты k8s без шаблонизации, то вам потребуется поработать с существенно большим объёмом данных, чтобы настроить ваше приложение в нескольких окружениях.
Недостатки:
• При использовании публичных чартов есть шанс столкнуться с багами.
• Тяжело реализуется сложная логика, есть ограничения.
• Для создания минималистичного values файла чарт должен быть заточен под приложение.
1/2
#лонгрид
Post #528
3.54K
- 👍 17