Helm — это пакетный менеджер для Kubernetes (по смыслу как apt-get/yum), который упрощает установку, обновление и управление приложениями в кластере.
Helm Chart — это набор файлов для шаблонизатора (пакет), которые необходимы для запуска приложения в k8s.
Польза Helm в том, что приложение можно установить или удалить целиком, не захламляя инфраструктуру.
Зачем нужен Helm в DevOps практике
Существует много готовых пакетов
Главный плюс Helm — это стандартный формат в экосистеме CNCF, поэтому можно найти готовый пакет под все основные приложения: от очередей (RabbitMQ, Kafka), до баз данных и мониторинга.
Где их искать написали в посте где искать helm chart.
Helm особенно полезен для DevOps команд, которые работают с микросервисами, container orchestration и используют GitOps подход к infrastructure as code.
Поддержка версионирования и откаты релизов
Helm автоматически создает историю всех релизов. Если что-то пошло не так, можно одной командой откатиться к предыдущей версии:
helm rollback my-app 1
Конфигурация приложения через файл
Helm позволяет все настройки для приложения собрать в 1 YAML файл values.yaml
:
- Хранить конфигурации приложений в Git, а не у тебя на компьютере
- Простым copy-paste развернуть приложение в нескольких средах (dev, staging, prod)
- Переиспользовать хорошие практики настройки в своей конфигурации
- Избежать ошибок при ручном редактировании множества YAML файлов через kubectl edit
Из чего состоит helm chart
Helm Chart — это коллекция файлов, которые описывают связанный набор ресурсов Kubernetes. Их можно локально собрать, а потом хоть руками через kubectl apply исполнить (но лучше через helm)
Компонент | Назначение | Пример |
---|---|---|
Chart.yaml | Метаданные чарта | Имя, версия, описание |
values.yaml | Конфигурационные значения | Порты, образы, ресурсы |
templates/ | Шаблоны K8s манифестов | Deployments, Services, Ingress |
charts/ | Зависимости | PostgreSQL, Redis чарты |
Основные Helm команды
Команда | Назначение | Пример |
---|---|---|
helm install |
Установка нового релиза | helm install my-app ./chart |
helm upgrade |
Обновление релиза | helm upgrade my-app ./chart |
helm rollback |
Откат к предыдущей версии | helm rollback my-app 1 |
helm list |
Список установленных релизов | helm list -A |
helm status |
Статус релиза | helm status my-app |
helm template |
Просмотр сгенерированных манифестов | helm template ./chart |
helm test |
Запуск тестов | helm test my-app |
Освой управление инцидентами в Kubernetes
Helm упрощает деплой, но что делать, когда несмотря на все автоматизации происходит инцидент? Kubernetes инциденты требуют специальных навыков диагностики. Попробуй демо-сценарий и узнай, как эффективно решать проблемы в продакшене.
1. Установка Helm
Установи Helm на свою машину:
# macOS
brew install helm
# Linux
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Windows
choco install kubernetes-helm
2. Добавление репозитория
Добавь официальный репозиторий с готовыми чартами:
helm repo add stable https://charts.helm.sh/stable
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
3. Поиск и установка приложения
Найди нужный чарт и установи его:
# Поиск чарта
helm search repo nginx
# Установка с кастомными значениями
helm install my-nginx bitnami/nginx \
--set service.type=LoadBalancer \
--set replicaCount=3
4. Управление релизами
Управляй жизненным циклом приложения:
# Просмотр установленных релизов
helm list
# Обновление релиза
helm upgrade my-nginx bitnami/nginx \
--set image.tag=1.21.0
# Откат к предыдущей версии
helm rollback my-nginx 1
# Удаление релиза
helm uninstall my-nginx
FAQ
Можно ли использовать Helm без Kubernetes?
Helm разрабатывался специально для Kubernetes и без него не работает. Однако концепции Helm можно применять для других платформ:
- Helmfile — для управления множеством Helm релизов
- Kustomize — альтернатива для шаблонизации Kubernetes манифестов
- Jsonnet — для генерации конфигураций в различных форматах