Введение
Helm – «менеджер пакетов для Kubernetes», позволяющий упаковывать, распространять и управлять жизненным циклом сложных Kubernetes-приложений. Если Kubernetes – это операционная система для контейнеров, то Helm – это apt или yum для неё.
Вместо того чтобы вручную применять десятки YAML-манифестов для развёртывания приложения с его сервисами, ConfigMap'ами, секретами и RBAC-правилами, Helm позволяет выполнить helm install my-app ./chart -f values.yaml – одна команда разворачивает всё приложение с нужными параметрами.
История и контекст
Helm создан в 2015 году в Deis (впоследствии приобретена Microsoft). Helm 2 (2016–2019) использовал серверный компонент Tiller с широкими правами в кластере – серьёзная уязвимость безопасности. Helm 3 (ноябрь 2019) убрал Tiller: состояние релизов теперь хранится как Kubernetes Secret в целевом namespace – намного безопаснее.
Helm стал стандартом de facto для деплоя в Kubernetes: практически все major open-source проекты (Prometheus, Grafana, Istio, PostgreSQL) предоставляют официальные Helm-чарты.
Как это работает
- Chart: директория с набором шаблонизированных Kubernetes-манифестов (templates/*.yaml), файлом Chart.yaml (метаданные) и values.yaml (параметры по умолчанию).
- Values: параметры конфигурации, переопределяемые при установке через
-f custom-values.yamlили--set key=value. - Templating: Go-шаблоны с функциями (sprig) позволяют динамически генерировать манифесты на основе values – if/else, loops, helpers.
- Release: установленный экземпляр чарта с именем. Одновременно можно иметь несколько releases одного чарта с разными values.
- Rollback:
helm rollback <release> <revision>возвращает к предыдущей версии релиза – Helm хранит историю ревизий. - OCI Registry: с Helm 3.8 чарты хранятся в OCI-реестрах наряду с контейнерными образами.
Где применяется
- CI/CD pipelines: автоматический деплой приложений в Kubernetes через
helm upgrade --installв GitLab CI / Argo CD. - Управление зависимостями: чарт может декларировать зависимости от других чартов – например, приложение зависит от PostgreSQL-чарта.
- Multi-environment: один чарт с разными values.yaml для dev/staging/prod – DRY-принцип для Kubernetes-конфигураций.
- GitOps: Argo CD и Flux CD используют Helm-чарты как источник истины для автоматического reconciliation состояния кластера.
Преимущества и ограничения
Преимущества: стандартизация деплоя; повторное использование чартов; управление версиями и откат; огромный каталог готовых чартов (Artifact Hub); упрощение CI/CD для Kubernetes.
Ограничения: Go-шаблоны сложны для сложной логики; сложные чарты трудно отлаживать; Helm не заменяет Kubernetes RBAC и Network Policies – только упрощает деплой; альтернативы (Kustomize, Jsonnet) иногда предпочтительнее.
Связь с другими понятиями
Helm – инструмент уровня деплоя поверх Kubernetes. Тесно интегрируется с Kubernetes Operator'ами и ArgoCD для GitOps-подходов. Чарты хранятся в OCI Image-совместимых реестрах. Ingress, Service Mesh и мониторинг (Prometheus, Grafana) разворачиваются через Helm-чарты.