hostprofi.ru
Подобрать хостинг
Термин

Helm chart

краткое определение

Пакетный менеджер для Kubernetes, позволяющий устанавливать приложения из готовых chart-пакетов.

Helm — пакетный менеджер для Kubernetes. Chart — единица упаковки: архив с шаблонами k8s-манифестов, значениями по умолчанию и метаданными. Вместо нескольких YAML-файлов разных ресурсов — один chart с параметрами.

Как работает

Helm берёт шаблоны из chart, подставляет значения из values.yaml (или переданные через --set) и генерирует финальные k8s-манифесты. Затем применяет их к кластеру через kubectl API. Установленный chart называется Release — именованным экземпляром приложения в кластере.

Репозитории Helm (ArtifactHub, Bitnami) хранят тысячи готовых chart: PostgreSQL, Redis, Grafana, cert-manager, ingress-nginx. Установка одной командой без ручного написания YAML.

Структура Helm Chart

my-chart/
├── Chart.yaml         # метаданные: имя, версия, описание
├── values.yaml        # значения по умолчанию
├── templates/
│   ├── deployment.yaml   # шаблон Deployment
│   ├── service.yaml      # шаблон Service
│   ├── ingress.yaml      # шаблон Ingress
│   └── _helpers.tpl      # переиспользуемые шаблоны
└── charts/            # зависимые chart (subchart)

История

Helm создан в 2015 году компанией Deis (поглощена Microsoft). Изначально использовал Tiller — серверный компонент внутри кластера, что создавало проблемы с безопасностью. Helm 3 (2019) устранил Tiller: Helm стал клиентской утилитой, работающей напрямую с k8s API через kubeconfig. Это упростило RBAC-управление и сделало архитектуру безопаснее.

Основные команды

# Добавить репозиторий
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# Поиск chart
helm search repo postgresql

# Установка
helm install my-db bitnami/postgresql --set auth.password=secret

# Просмотр релизов
helm list

# Обновление с новыми значениями
helm upgrade my-db bitnami/postgresql --set resources.limits.memory=2Gi

# Откат к предыдущей версии
helm rollback my-db 1

# Удаление
helm uninstall my-db

Values и переопределение

Параметры chart переопределяются через файл значений: helm install my-app ./my-chart -f production-values.yaml. Типичные параметры: количество реплик, размер памяти, имя хоста Ingress, credentials для баз данных. ConfigMap и Secrets создаются из шаблонов chart автоматически.

На что обращать внимание

Шаблоны Helm используют Go template syntax — непривычный синтаксис для тех, кто знает только YAML. Отладка: helm template my-chart ./chart рендерит финальные манифесты без установки. helm lint проверяет корректность chart до деплоя. Helm хранит историю релизов в Secrets кластера — не удаляйте их вручную, иначе потеряете возможность отката.

Chart репозитории

ArtifactHub.io — центральный каталог Helm chart, как npm для JavaScript. Bitnami (VMware) предоставляет chart для PostgreSQL, Redis, MariaDB, WordPress, Nginx — актуальные, с регулярными обновлениями безопасности. Официальный Grafana chart устанавливает полный стек мониторинга вместе с Prometheus.

Создание собственного chart

helm create myapp генерирует скелет chart с примерами Deployment, Service и Ingress. Шаблоны используют синтаксис Go templates с функциями sprig: {{ .Values.image.tag | default "latest" }}. Переменные из values.yaml доступны через .Values.*, метаданные chart — через .Chart.*, информация о релизе — через .Release.*.

Для публикации chart создайте GitHub Pages репозиторий и запустите helm package + helm repo index. Пользователи добавляют репозиторий командой helm repo add myrepo https://myuser.github.io/helm-charts.

Зависимости между chart описываются в Chart.yaml в секции dependencies. helm dependency update скачивает зависимые chart в папку charts/. Это позволяет создавать umbrella chart, разворачивающий всё приложение (frontend + backend + PostgreSQL) одной командой.

Другие термины