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 — для генерации конфигураций в различных форматах