Helm — это инструмент развертывания Kubernetes для автоматизации создания, упаковки, настройки и развертывания приложений и служб в кластерах Kubernetes.
Kubernetes — это мощная система управления контейнеризацией для развертывания приложений. Для этого существует несколько независимых ресурсов, и для каждого требуется отдельный YAML-файл манифеста.
В этой статье расскажем, что такое Helm и Helm Charts, а также как автоматизировать развертывание приложений в Kubernetes.
Что такое Helm?
Если бы Kubernetes был операционной системой, то Helm был бы менеджером пакетов. Ubuntu использует apt, CentOS использует yum, а Kubernetes использует helm.
Helm развертывает пакетные приложения в Kubernetes и структурирует их в чарты (Helm Charts). Чарты содержат все предустановленные ресурсы приложения вместе со всеми версиями, которые помещены в один легко управляемый пакет.
Helm упрощает установку, обновление, вызов зависимостей и настройку развертываний в Kubernetes с помощью простых CLI-команд. Пакеты программного обеспечения находятся в репозиториях или создаются.
Почему нам нужен Helm?
Объектами Kubernetes сложно управлять. Благодаря полезным инструментам освоение Kubernetes становится плавным и удобным. Helm автоматизирует обслуживание YAML-файлов для объектов Kubernetes, упаковывая информацию в чарты и анонсируя их в кластере Kubernetes.
Helm отслеживает историю версий для каждой установки и изменения чарта. Откат к предыдущей версии или обновление до более новой выполняется понятными командами.
Доступные команды:
- Completion — создает сценарий автозаполнения для указанной оболочки.
- Create — создает новый чарт с заданным именем.
- Dependency — управление зависимостями чарта.
- Env — информация о клиентской среде Helm.
- Get — загрузка расширенной информации об именованном релизе.
- Help — помощь по любой команде.
- History — получить историю релизов.
- Install — установить чарт.
- Lint — проверить чарт на возможные проблемы.
- List — список релизов.
- Package — упаковать каталог чарта в архив чарта.
- Plugin — установить, внести в список или удалить плагины Helm.
- Pull — загрузить чарт из репозитория или (опционально) распаковать его в локальный каталог.
- Repo — установка, внесение в список, удаление, обновление и индексация репозиториев чартов.
- Rollback — откат релиза к предыдущей версии.
- Search — поиск в чарте по ключевым словам.
- Show — показать информацию о чарте.
- Status — отображение статуса названного релиза.
- Template — локальное отображение шаблонов.
- Test — запустить тесты релиза.
- Uninstall — деинсталлировать релиз.
- Upgrade — обновить релиз.
- Verify — проверить, что чарт по указанному пути подписан и действителен.
- Version — распечатать информацию о версии клиента.
Что вы можете сделать с помощью Helm?
Helm позволяет разработчикам программного обеспечения развертывать и тестировать среду самым простым способом. Требуется меньше времени, чтобы перейти от разработки к тестированию и продакшену.
Помимо повышения производительности, Helm предоставляет разработчикам удобный способ упаковки и отправки приложений конечным пользователям для установки.
Как работает Helm?
Helm и Kubernetes работают как клиент-серверное приложение. Клиент Helm отправляет ресурсы в кластер Kubernetes. Серверная часть зависит от версии: Helm 2 использует Tiller, тогда как Helm 3 избавился от Tiller и полностью полагается на Kubernetes API.
Что такое Helm Charts?
Чарты Helm (Helm Charts) — это пакеты Helm, состоящие из файлов и шаблонов YAML, которые преобразуются в файлы манифеста Kubernetes. Чарты могут повторно использоваться кем угодно и в любой среде, что уменьшает сложность и количество дубликатов. Папки имеют следующую структуру:Как работают чарты Helm?
Три основные концепции чартов Helm:
- Чарт — предварительно настроенный шаблон ресурсов Kubernetes.
- Релиз — чарт, развернутый с помощью Helm в кластере Kubernetes.
- Репозиторий — общедоступные чарты.
Рабочий процесс заключается в поиске чартов через репозитории и создании релизов путем установки чартов в кластеры Kubernetes.
Структура чарта Helm
Файлы и каталоги чарта Helm имеют определенную функцию:
Название | Тип | Функция |
---|---|---|
charts/ | Каталог | Каталог для управляемых вручную зависимостей чарта. |
templates/ | Каталог | Написанные на языке Go файлы шаблонов, объединенные с конфигурационными значениями из файла values.yaml и предназначенные для генерации манифестов Kubernetes. |
Chart.yaml | Файл | Метаданные о чартах, такие как: версия, имя, ключевые слова для поиска и так далее. |
LICENSE (опционально) | Файл | Лицензия на чарт в текстовом формате. |
README.md (опционально) | Файл | Удобочитаемая информация для пользователей чарта. |
requirements.yaml (опционально) | Файл | Список зависимостей чарта. |
values.yaml | Файл | Настройки чарта по умолчанию. |
Создавайте чарты Helm вручную или собирайте общедоступные чарты из репозиториев.
Репозитории чартов Helm
Репозитории содержат чарты, которые могут быть установлены или предоставлены для доступа другим пользователям. Helm обеспечивает поиск напрямую из клиента. Существует два основных типа поиска:
helm search hub
— поиск через Artifact Hub из множества репозиториев.helm search repo
— поиск через репозитории, добавленные в локальном клиенте Helm с помощьюhelm repo add
.
Без каких-либо фильтров в результатах поиска отображаются все доступные чарты. Чтобы уточнить запрос, добавьте условие поиска. Например:
helm search hub wordpress
Когда найдете подходящий чарт, установите его с помощью helm install
.
Релизы чартов
При установке чарта создается новый пакет. Команда helm install
принимает два аргумента:
helm install <release name> <chart name>
Запуск helm install
выводит полезную информацию и указывает, следует ли вам предпринять какие-либо действия для установки. Чарты кастомизируемы и легко настраиваются перед установкой. Релизы Helm легко поддерживать и откатывать в случае любых нежелательных изменений.