Менеджер пакетов helm

Helm — это пакетный менеджер, который устанавливает пакеты (называются Чартами в Helm) для Kubernetes и управляет ими, как это делают yum и apt. Чарт — это шаблонизированный набор YAML-манифестов с переменными, которые можно кастомизировать через values.yaml. Он содержит все определения ресурсов, необходимые для запуска приложения, инструмента или службы внутри кластера Kubernetes.

Helm нужен для упрощения развертывания и управления сложными приложениями в Kubernetes, так как в реальных проектах приложения состоят из десятков ресурсов (деплойменты, сервисы, ингрессы, секреты и т.д.).

Helm решает проблемы масштаба и сложности. Он использует шаблоны (с Go-плейтингом), где вы параметризуете значения — например, количество реплик, образы контейнеров или окружения (dev/prod). Без Helm пришлось бы редактировать YAML вручную, что приводит к ошибкам и дублированию.

Helm строится на kubectl. Когда выполняется команда helm install, Helm рендерит шаблоны в YAML и передает их kubectl для применения (например, эквивалентно kubectl apply). Можно увидеть процесс рендеринга, если использовать флаг --dry-run или логированием.

Вот еще несколько важных и полезных фич Helm, которых нет у kubectl:

Установка helm

Helm доступен для установки на все популярные OS:

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee
/usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture
signed-by=/usr/share/keyrings/helm.gpg]
https://baltocdn.com/helm/stable/debian/ all main" | sudo tee
/etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

$ git clone https://github.com/helm/helm.git
$ cd helm
$ make

Поиск чартов в репозиториях

Helm предлагает мощную систему поиска готовых чартов для K8s в хабе the Artifact Hub и среди локальных репозиториев:

Например, так можно найти готовый чарт fastapi на the Artifact Hub: helm search hub fastapi --max-col-width 0. Команда вернет список всех доступных чартов для загрузки.

Ключ --max-col-width 0 устанавливает автомасштабируемую ширину колонок, что делает поиск более удобным и наглядным.

Обратите внимание, что команда helm search hub возвращает лишь ссылки на the Artifact Hub, а не ссылки на сами чарты. Чтобы посмотреть состав и свойства чарта нужно перейти по ссылке из вывода helm search hub на the Artifact Hub.

Скачивание готовых чартов из репозиториев

Для скачивания и подготовки чарта к деплою выполните следующие шаги:

Внутри чарта

Helm-чарт — это папка с определенной структурой файлов, которая описывает, как развернуть одно или несколько приложений в Kubernetes. Сам чарт — это по сути шаблонный пакет, который Helm превращает в обычные Kubernetes-манифесты при установке/обновлении. Чарт можно сразу установить командой helm install или скачать в .tgz архиве командой helm pull, а далее его распаковать.

Чарт внутри может быть устроен по-разному, вот пример устройства FastAPI чарта:

Структура fastapi чарта внутри:

. ├── Chart.yaml
├── templates
│ ├── _helpers.tpl
│ ├── configmap.yaml
│ ├── deployment.yaml
│ └── service.yaml
└── values.yaml

Деплой чарта

  1. Перейдите в директорию чарта и проверьте манифесты и файл values.yaml. При необходимости отредактируйте значения под ваши нужды.
  2. Перед установкой чарта рекомендуется проверить, что будет создано командой helm install --dry-run --debug. Флаг --dry-run выполняет симуляцию установки без применения изменений в кластере, а --debug показывает сгенерированные манифесты. Это позволяет убедиться в корректности конфигурации перед реальной установкой.
  3. Для установки чарта выполните команду helm install , где — имя релиза (например, my-fastapi), а — путь к распакованной директории чарта. Если хотите переопределить значения, используйте флаг -f: helm install -f custom-values.yaml.

Есть более быстрый, простой, но менее контролируемый путь установки чарта — сразу с the Artifact Hub командой helm install. При переходе по ссылке на the Artifact Hub в интерфейсе INSTALL будут предложены две команды:

Явный минус такого пути установки чарта — чарт будет сразу установлен и задеплоен в namespace default, что не всегда желательно. Чтобы проверить установку без применения изменений, добавьте флаги --dry-run --debug к команде helm install.

Также очень полезно запускать релиз сразу в нужном namespace (по умолчанию default): --namespace или -n .

Управление релизами

После релиза необходимо убедиться в том, что релиз прошел так, как было задумано, и его состояние отвечает нужным требованиям. Далее приведены команды для проверки статуса релиза, его обновления, отката и удаления.

Просмотр информации о релизе

С помощью команды helm list или helm ls можно просмотреть все установленные релизы:

helm list -A # во всех namespace
helm list -n production # в конкретном namespace

Команда helm status вернет статус конкретного релиза и информацию о ресурсах: helm status my-app. Для получения информации о значениях values используется команда helm get values : helm get values my-app. Получить всю информацию о релизе (манифесты, values, hooks, notes) можно с помощью команды helm get all : helm get all my-app.

Обновление, удаление и откат релизов

Команда helm upgrade позволяет обновить уже установленный релиз новой версией чарта или с измененными параметрами. При обновлении Helm создает новую ревизию релиза, что дает возможность откатиться к предыдущей версии в случае проблем: helm upgrade .

Например, вот так можно обновить существующий релиз FastAPI: helm upgrade my-fastapi ./fastapi-chart -f production-values.yaml. Конечно же, перед обновлением релиза полезно убедиться в его работоспособности с помощью команды --dry-run: helm upgrade my-fastapi ./fastapi-chart --dry-run --debug.

Также можно использовать ключ --atomic для более безопасного деплоя новой версии сервиса. --atomic позволяет автоматически откатить изменения, если обновление не удалось: helm upgrade my-app ./app-chart --atomic.

Откат релиза

Команда helm rollback откатывает релиз на предыдущую или указанную ревизию. Это критически важная функция для быстрого восстановления работоспособности приложения после неудачного обновления: helm rollback [revision]. Если номер ревизии не указан, Helm откатится на предыдущую ревизию. Важно отметить, что откат также создает новую ревизию. Например, если у вас была ревизия 3, и вы откатились на ревизию 1, будет создана ревизия 4, которая является копией ревизии 1.

Удаление релиза

Команда helm uninstall (или helm delete) полностью удаляет релиз и все связанные с ним ресурсы Kubernetes из кластера: helm uninstall . Релиз можно удалить с возможностью восстановления: helm uninstall my-app --keep-history. При использовании --keep-history релиз помечается как удаленный, но история ревизий сохраняется. Это позволяет посмотреть историю командой helm history my-app или восстановить релиз командой helm rollback my-app .

Последнее обновление: 30.06.2026