Что такое Helm и Helm Charts?

«Что такое Helm и Helm Charts?» — вопрос из категории Kubernetes, который задают на 33% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Helm — это пакетный менеджер для Kubernetes, который позволяет определять, устанавливать и обновлять даже самые сложные приложения как единое целое — «чарт» (Chart).

Helm Chart — это упакованный набор файлов, описывающих связанный набор ресурсов Kubernetes. Он содержит шаблоны, значения по умолчанию и метаданные.

Основные преимущества:

  • Шаблонизация: Позволяет параметризировать манифесты Kubernetes с помощью Go-шаблонов и файла values.yaml. Это устраняет дублирование кода.
  • Управление конфигурациями: Легко создавать разные релизы одного приложения (dev, staging, prod) с разными наборами значений.
  • Управление зависимостями: Чарт может зависеть от других чартов (например, приложение + база данных).
  • Жизненный цикл: Простые команды для установки (helm install), обновления (helm upgrade), отката (helm rollback) и удаления (helm uninstall).

Структура чарта:

my-app-chart/
├── Chart.yaml          # Метаданные чарта (имя, версия, зависимости)
├── values.yaml         # Значения параметров по умолчанию
├── templates/          # Каталог с шаблонами манифестов
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── ingress.yaml
│   └── _helpers.tpl   # Вспомогательные шаблоны
└── charts/             # Подчиненные чарты (зависимости)

Практический пример:

  1. Поиск чарта: helm search hub nginx
  2. Установка из репозитория: helm install my-nginx bitnami/nginx -f custom-values.yaml
  3. Создание своего чарта: helm create my-microservice
  4. Упаковка и публикация: helm package ./my-microservice && helm push my-microservice-1.0.0.tgz oci://my-registry.com/charts