Commands
Kubernetes

helm install: Установка чарта: кастомные values, создание namespace, dry-r

Установка чарта: кастомные values, создание namespace, dry-run

Базовый синтаксис

Команда helm install разворачивает приложение в кластере Kubernetes из пакета, который называется чарт. Вот минимальный рабочий пример:

helm install my-release bitnami/nginx

Разберем по частям:

  • my-release — имя релиза. Это уникальный идентификатор вашего развертывания в кластере. По этому имени вы будете управлять установкой (обновлять, удалять).
  • bitnami/nginx — путь к чарту. bitnami — имя репозитория, nginx — имя чарта в этом репозитории. Helm предварительно должен знать о репозитории (helm repo add bitnami https://charts.bitnami.com/bitnami).

После выполнения команды Helm создаст в текущем namespace набор Kubernetes-ресурсов (Deployment, Service и т.д.), описанных в чарте nginx, и присвоит им метки, связывающие с релизом my-release.

Полезные флаги

--values и --set — для кастомизации конфигурации. Чарты используют файлы values.yaml для параметров. Чтобы переопределить их, передайте свой файл или укажите значения напрямую.

# Передаем свой конфигурационный файл
helm install my-app ./my-chart --values=production-values.yaml

# Или задаем конкретные параметры прямо в командной строке
helm install my-app bitnami/nginx --set replicaCount=3,service.type=LoadBalancer

--values используется для сложной конфигурации (например, staging/prod окружения). --set удобен для быстрого переопределения одного-двух параметров.

--namespace и --create-namespace — для работы с пространствами имен. По умолчанию установка идет в namespace default. Чтобы установить в конкретный namespace и создать его, если он не существует:

helm install my-app ./my-chart --namespace=monitoring --create-namespace

Без --create-namespace команда упадет с ошибкой, если namespace monitoring не создан.

--dry-run — для проверки перед реальной установкой. Флаг позволяет сгенерировать итоговые манифесты и проверить, что именно будет отправлено в API Kubernetes, без реального применения.

helm install my-app ./my-chart --dry-run --debug

Ключ --debug выводит полный рендеренный шаблон. Это главный инструмент для отладки чартов.

Типичные сценарии

1. Установка с кастомными values для разных окружений. У вас есть базовый чарт и два файла конфигурации: для разработки и продакшена. Установка в production будет выглядеть так:

helm install my-backend ./app-chart \
  --namespace=production \
  --values=values.yaml \
  --values=values.production.yaml

Helm мержит значения из файлов последовательно. Параметры из values.production.yaml перезапишут одноименные из values.yaml.

2. Предпродакшенная проверка (dry-run). Перед обновлением продакшен-релиза вы хотите убедиться, что новые значения не сломают шаблоны и создадут корректные ресурсы.

helm upgrade --install my-backend ./app-chart \
  --namespace=production \
  --values=values.production.yaml \
  --dry-run

Комбинация upgrade --install (установит, если релиза нет) с --dry-run — стандартный этап CI/CD пайплайна.

Частые ошибки

Конфликт --set и --values. Значения, заданные через --set, имеют наивысший приоритет и перезапишут даже те, что указаны в файлах из --values. Это может привести к неожиданному поведению, если вы забыли про этот флаг в длинной команде. Всегда проверяйте итоговые значения командой helm get values <release-name>.

Пропущенный --create-namespace. Ошибка Error: create: failed to create: namespaces "monitoring" not found возникает, когда вы пытаетесь установить релиз в несуществующий namespace, не используя флаг --create-namespace. Всегда добавляйте его, если не уверены в существовании namespace.