Что такое helm, helm charts
Helm — это пакетный менеджер для Kubernetes, который автоматизирует установку, обновление и управление приложениями. Helm Charts — это упакованные шаблоны Kubernetes-ресурсов, которые позволяют описывать приложение и его зависимости в виде воспроизводимых артефактов, похожих на пакеты .deb или .rpm в Linux. С помощью Helm можно развернуть сложное приложение одной командой, а также управлять его конфигурацией через values-файлы.
Как это работает
Helm состоит из двух основных компонентов:
- Helm Client (CLI) — командная строка для работы с чартами: поиск, установка, обновление, откат. Начиная с версии 3, серверный компонент Tiller был удалён, и Helm напрямую взаимодействует с Kubernetes API.
- Helm Charts — пакеты, содержащие шаблоны манифестов Kubernetes и метаданные. Чарты хранятся в репозиториях (например, Bitnami, официальный Helm Hub) или в локальных каталогах.
При установке чарта Helm генерирует из шаблонов конкретные манифесты, подставляя значения из values.yaml или переданные пользователем. Это позволяет использовать один и тот же чарт для разных окружений (dev, staging, prod), меняя только параметры.
Структура Helm Chart
Типичный чарт имеет следующую структуру:
my-chart/
├── Chart.yaml # метаданные: имя, версия, описание
├── values.yaml # значения по умолчанию для шаблонов
├── templates/ # шаблоны Kubernetes-ресурсов
│ ├── deployment.yaml
│ ├── service.yaml
│ └── NOTES.txt # текст, выводимый после установки
├── charts/ # зависимые чарты (subcharts)
└── crds/ # Custom Resource DefinitionsChart.yaml— обязательный файл, содержит имя и версию чарта, а также зависимости.values.yaml— определяет параметры, которые подставляются в шаблоны. Пользователь может переопределить их через--setили отдельный файл.templates/— содержит Go-шаблоны (с использованием синтаксиса{{ .Values.имя }}), которые превращаются в манифесты.charts/— вложенные чарты, которые устанавливаются как зависимости.crds/— для установки Custom Resource Definitions до применения остальных ресурсов.
Пример использования
Добавим репозиторий и установим nginx:
# Добавить репозиторий Bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
# Обновить список доступных чартов
helm repo update
# Установить чарт nginx с именем релиза my-release
helm install my-release bitnami/nginxПосле установки можно проверить статус:
helm list
helm status my-releaseДля обновления релиза с новыми значениями:
helm upgrade my-release bitnami/nginx --set replicaCount=3Подводные камни и лучшие практики
- Версионирование: всегда указывайте версию чарта (
--version), чтобы избежать неожиданных обновлений. - Управление зависимостями: используйте
charts/илиdependenciesвChart.yamlдля вложенных чартов, но помните о сложности обновления. - Секреты: не храните пароли в
values.yaml— используйте Kubernetes Secrets или внешние инструменты (например, Sealed Secrets). - Откат: Helm позволяет откатить релиз командой
helm rollback, что упрощает восстановление после неудачного обновления. - Разделение конфигурации: для разных окружений создавайте отдельные values-файлы (
values-dev.yaml,values-prod.yaml).
Коротко
- Helm — пакетный менеджер для Kubernetes, а Helm Charts — его пакеты.
- Чарт содержит шаблоны ресурсов и values-файлы для конфигурации.
- Основные команды:
helm repo add,helm install,helm upgrade,helm rollback. - Helm 3 работает без серверного компонента Tiller, напрямую с Kubernetes API.
- Используйте чарты для воспроизводимого развёртывания и управления зависимостями приложений.