Helm — это менеджер пакетов для Kubernetes, который упрощает установку, обновление и управление приложениями в кластере. Если проводить аналогию, Helm для Kubernetes — это примерно то же самое, что apt для Debian-семейства Linux или npm для JavaScript: он позволяет работать с готовыми пакетами, а не устанавливать все вручную.
Основная единица в Helm — чарт. Это набор шаблонов, в которых описана конфигурация приложения для Kubernetes и все связанные с ним ресурсы:
- Deployment, Service, Ingress;
- ConfigMap и Secret и другие сопутствующие ресурсы, включая CRD (Custom Resource Definition);
- зависимости от других компонентов;
- параметры, которые можно настраивать под конкретное окружение.
Технически чарт представляет собой структуру каталогов и файлов с четко определенным назначением:
- Chart.yaml — основной файл, в котором хранится метаинформация о приложении: название, версия, описание, зависимости и другие служебные данные. Он определяет, что это за чарт и как его воспринимает Helm.
- values.yaml — файл со значениями по умолчанию. В нем задаются параметры, которые подставляются в шаблоны и позволяют переиспользовать чарт для разных окружений. Дополнительно может использоваться JSON-схема значений, описывающая структуру values.yaml. Она помогает валидировать параметры и упрощает создание форм для их редактирования.
- Каталог templates/ содержит шаблоны Kubernetes-манифестов. Helm объединяет их с данными из values.yaml и на выходе формирует готовые YAML-файлы, которые применяются в кластере.
- Каталог charts/ используется для хранения зависимостей (сабчартов - subcharts) — других чартов, указанных в Chart.yaml. Они загружаются и обновляются с помощью команд helm dependency build или helm dependency update.
Каждая установка чарта создает отдельный экземпляр, называемый релизом. Helm хранит историю релизов, что позволяет отслеживать изменения и при необходимости откатываться к предыдущим версиям чарта и конфигурации. Благодаря этому одно и то же приложение можно безопасно разворачивать и обновлять с разными настройками — например, для тестовой и продакшн-среды.

Зачем нужен Helm
Helm упрощает ряд ключевых операций при работе с Kubernetes:
- Упрощение развертывания. Приложения в Kubernetes часто состоят из десятков или сотен ресурсов:подов, сервисов, конфиг-мап и др.). Helm объединяет их в единый пакет — чарт, который можно развернуть одной командой и применить настройки конкретного окружения из values.yaml.
- Управление версиями. У каждого чарта может быть несколько версий, что позволяет легко обновлять приложения, откатываться к предыдущей версии при необходимости, а также отслеживать историю изменений развернутых приложений, при этом, при желании версию приложения (тег образа) можно указать отдельно, т.е. параметры чарта могут быть отделены от версий приложений (хотя это и не обязательно).
- Повторное использование конфигураций. Helm использует шаблоны для генерации описаний ресурсов Kubernetes. Автор чарта сам решает какие параметры можно переопределить для конкретного окружения, давая таким образом возможность управления конфигурацией приложений и управляя гибкостью конфигурации. Это позволяет использовать один чарт в разных окружениях с минимальными изменениями.
- Централизованное управление репозиториями. Чарты могут храниться в OCI- и/или Git-репозиториях, а так же просто в виде архива на HTTP-серверах (публичных или частных). С Helm вы можете добавлять новые источники чартов, обновлять их содержимое и устанавливать приложения напрямую из существующих репозиториев.
Основные преимущества Helm
Давайте разберем, в чем главные плюсы Helm:
- Экономия времени. Не нужно каждый раз писать конфигурацию заново. Helm предлагает готовые шаблоны, с которыми запуск приложения занимает гораздо меньше времени.
- Один чарт — для всех окружений. Один и тот же чарт подойдет и для разработки, и для тестирования, и для продакшена. Нужно лишь изменить несколько параметров — и приложение готово к работе в новом окружении. Кроме того, Helm позволяет создавать несколько values.yaml - для каждого окружения свой с мержем параметров из того, что поставляется в чарте.
- Возможность управления через командную строку. Все операции — установка, обновление, проверка статуса и удаление — выполняются простыми командами.
- Легко масштабировать приложения. Хотите добавить реплик или выделить больше ресурсов? Измените нужные значения в файле values.yaml и запустите обновление.
- Работает с CI/CD. Helm легко встраивается в процессы непрерывной интеграции и доставки (CI/CD).
- Можно быстро откатиться назад. Helm запоминает последние обновления. Если после обновления что-то сломалось, вы за пару команд вернетесь к предыдущей рабочей версии.

Как установить Helm
Helm работает с Kubernetes через API, поэтому в теории версии должны быть совместимы. Но на практике это редко важно — современные версии Helm хорошо работают с типичными кластерами, даже если версии немного отличаются. Проблемы могут возникнуть только при использовании очень старых версий Kubernetes.
Проверить версии клиента и сервера Kubernetes, можно выполнив:
kubectl version --short
Linux
Установите необходимые пакеты:
sudo apt update
sudo apt install apt-transport-https curl gpg --yes
Добавьте ключ подписи репозитория Helm:
curl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/helm.gpg > /dev/null
Подключите репозиторий Helm:
echo "deb [signed-by=/usr/share/keyrings/helm.gpg] https://packages.buildkite.com/helm-linux/helm-debian/any/ any main" \
| sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
Обновите список пакетов и установите Helm:
sudo apt update
sudo apt install helm
Убедитесь, что Helm доступен в системе:
helm version
Команда должна вывести текущую версию Helm. Если этого не произошло, стоит проверить права доступа и наличие бинарного файла в PATH.
Установка выше актуальна для Debian и Ubuntu. Для RHEL / CentOS и Fedora пропишите:
sudo dnf install -y helm
Windows
На Windows самый удобный способ установить Helm — через winget. Это встроенный менеджер пакетов для Windows, который автоматически скачивает и настраивает последнюю стабильную версию Helm.
Откройте PowerShell от имени администратора.
Чтобы установить актуальную версию Helm (например, Helm v4.0.4 — последняя официальная стабильная версия на момент написания статьи), выполните:
winget install Helm.Helm --version 4.0.4
Если winget предложит несколько вариантов, выберите тот, который соответствует Helm CLI.
Проверьте, что Helm доступен в системе:
helm version
Команда должна показать установленные версии клиента и (опционально) сервера.
macOS
Лучше устанавливать Helm через Homebrew. Он всегда устанавливает последнюю доступную версию Helm (на данный момент — 4.0.4), у вас не будет возможности выбрать более старую версию.
Для установки выполните команду:
brew install helm
Проверьте, что Helm корректно установлен и доступен в системе:
helm version

Основные команды Helm
1. Проверка установки и окружения
Эти команды помогут быстро разобраться, какая версия Helm установлена, как он настроен и какие параметры окружения использует. Их запускают в начале работы или при поиске причин неполадок — они безопасны и не влияют на состояние кластера:
helm version — показывает установленную версию Helm, информацию о сборке и поддерживаемых возможностях. Позволяет убедиться, что используется нужная версия.
helm env — выводит переменные окружения Helm: пути к каталогам кэша, конфигурации и данных, а также расположение файла kubeconfig. Помогает понять, откуда Helm берет настройки и куда сохраняет данные.
helm help — отображает общую справку по Helm и список всех доступных команд.
helm help <command> — показывает подробную справку по конкретной команде. Включает описание, список параметров с их значениями и примеры использования. Помогает быстро разобраться, как правильно применить нужную команду.
2. Работа с репозиториями чартов
Helm работает с готовыми пакетами приложений, которые хранятся в репозиториях чартов. Репозиторий — это обычный HTTP-каталог со структурированным набором чартов и индексным файлом. Пока репозиторий не подключен, Helm просто не знает, откуда брать приложения для установки.
Подключение репозитория
Чтобы начать использовать чарты, репозиторий нужно добавить. Обычно это публичные каталоги популярных проектов или внутренних командных решений. Например, официальный репозиторий Bitnami подключается так:
helm repo add bitnami https://charts.bitnami.com/bitnami
Helm сохранит адрес репозитория и будет использовать его при поиске и установке чартов. Название bitnami — это локальный алиас, который потом используется в командах.
Просмотр доступных источников
В любой момент можно проверить, какие репозитории уже подключены. Для этого используется команда:
helm repo list
Она выводит таблицу с именами репозиториев и их URL. Это особенно полезно, когда Helm настраивается на сервере или используется несколькими людьми, и нужно понять, какие источники уже добавлены.
Обновление данных репозиториев
Helm не обновляет список чартов автоматически. После подключения репозитория или при ожидании новых версий приложений необходимо вручную обновить индексы:
helm repo update
Эта команда загружает актуальную информацию о доступных чартах и их версиях. Ее выполняют перед установкой или обновлением приложений, чтобы Helm работал с последними данными.
Поиск чартов
Helm позволяет искать чарты по имени или ключевым словам. Например, чтобы найти все чарты, связанные с Nginx:
helm search repo nginx
В выводе будут показаны названия чартов, версии и краткое описание. Это помогает быстро оценить, какой чарт подходит под задачу, и из какого репозитория он будет установлен.
Удаление репозитория
Если репозиторий больше не используется, его можно удалить из конфигурации Helm:
helm repo remove bitnami
Удаление репозитория не затрагивает уже установленные приложения. Helm просто перестает обращаться к этому источнику при поиске и установке новых чартов.
3. Поиск и предварительная проверка чарта
Helm позволяет сначала разобраться с чартом, а уже потом устанавливать его в кластер. Это удобно: можно понять, что конкретно будет развернуто, какие настройки доступны и подходит ли чарт под задачу.
Поиск чарта
Когда репозитории уже подключены, нужный чарт можно найти по названию или ключевому слову. Например, поиск Nginx выглядит так:
helm search repo nginx
Helm покажет список доступных чартов, их версии и короткое описание. Как правило, этого хватает, чтобы выбрать подходящий вариант и понять, из какого репозитория он будет установлен.
Если неизвестно, в каком репозитории лежит чарт, можно воспользоваться глобальным поиском:
helm search hub redis
Просмотр информации о чарте
Найденный чарт можно посмотреть без установки. Для этого есть команда:
helm show chart bitnami/nginx
Она выводит основную информацию о чарте: название, версию, описание и зависимости.
Просмотр настроек
Почти всегда есть смысл заглянуть в настройки, поставляемые с чартом:
helm show values bitnami/nginx
Здесь показаны все параметры, которые можно менять при установке. Обычно этот вывод используют как основу для собственного values.yaml.
Просмотр содержимого чарта целиком
Если нужно понять, какие ресурсы создает чарт, можно посмотреть все сразу:
helm show all bitnami/nginx
Загрузка чарта локально
В некоторых случаях удобнее изучить чарт как обычный каталог с файлами. Для этого его можно скачать:
helm pull bitnami/nginx --untar
После этого чарт можно спокойно открыть и посмотреть его структуру, шаблоны и значения.
4. Управление релизами
Приложение, установленное через Helm существует в кластере Kubernetes в виде релиза - специальным образом оформленного ресурса типа Secret. Релиз описывает установленный чарт с конкретными настройками и собственной историей изменений. Все основные действия с приложениями в Kubernetes через Helm сводятся к управлению релизами.
Установка чарта
Чтобы установить чарт, используется команда helm install. В ней указывается имя релиза и чарт:
helm install my-nginx bitnami/nginx
Где my-nginx — это имя релиза, под которым приложение будет храниться в Helm. Его можно выбрать произвольно. Если имя не указать, Helm сгенерирует его автоматически, но на практике обычно удобнее использовать осмысленные названия.
При установке можно сразу передать настройки:
helm install my-nginx bitnami/nginx -f values.yaml
В этом случае Helm применит параметры из файла values.yaml вместо значений по умолчанию.
Обновление релиза
Чтобы изменить конфигурацию или обновить версию чарта, есть команда:
helm upgrade my-nginx bitnami/nginx
Если нужно обновить настройки, указывается файл значений или параметры:
helm upgrade my-nginx bitnami/nginx -f values.yaml
Часто upgrade используют вместе с флагом --install:
helm upgrade --install my-nginx bitnami/nginx
В этом случае Helm установит чарт, если релиз еще не существует, и обновит его, если он уже был установлен. Этот вариант часто применяют в CI/CD.
Просмотр установленных релизов
Чтобы увидеть все релизы в текущем пространстве имен, используется команда:
helm list
Для просмотра релизов во всех пространствах добавляется флаг -А:
helm list -A
Просмотр состояния релиза
Информацию о конкретном релизе можно получить так:
helm status my-nginx
Команда покажет статус релиза, связанные ресурсы и полезные подсказки по дальнейшим действиям.
Получение данных из релиза
Helm также может показать манифесты и значения, с которыми был установлен релиз. Их можно посмотреть отдельно:
helm get values my-nginx
helm get manifest my-nginx
История релиза
Helm хранит историю всех изменений каждого релиза. Это позволяет увидеть, когда и с какими параметрами приложение обновлялось, а также подготовиться к откату при необходимости.
Для просмотра истории используется команда:
helm history my-nginx
В выводе отображаются все ревизии релиза, их номера, время обновления, статус и описание операции (install, upgrade и т.д.). Номер ревизии из этого списка используется при выполнении отката:
helm rollback my-nginx 2
Удаление релиза
Релиз можно удалить:
helm uninstall my-nginx
Helm удалит все ресурсы, связанные с ним. История релиза при этом тоже будет очищена.

5. Откаты и восстановление
Чтобы вернуть релиз к выбранной ревизии, используется команда helm rollback:
helm rollback my-nginx 2
Helm применит конфигурацию и манифесты из указанной ревизии и создаст новую запись в истории релиза — откат тоже считается изменением и всегда фиксируется.
Если номер ревизии не указан, Helm откатится к предыдущей версии автоматически:
helm rollback my-nginx
6. Управление значениями и конфигурацией
Helm позволяет гибко управлять настройками приложения без изменения самих шаблонов чарта. Все параметры выносятся в значения, которые можно передавать разными способами — в зависимости от задачи и удобства.
Использование файла values.yaml
Самый распространенный вариант — передача файла с настройками:
helm install my-nginx bitnami/nginx -f values.yaml
Тот же файл используется и при обновлении релиза:
helm upgrade my-nginx bitnami/nginx -f values.yaml
Также Helm позволяет передавать несколько файлов values.yaml. Это удобно, например, когда базовые настройки лежат в одном файле, а окружение (dev/prod) — в другом. Файлы применяются слева направо, и значения из последнего файла перекрывают предыдущие:
helm install my-nginx bitnami/nginx -f values.yaml -f values.prod.yaml
Аналогично для обновления:
helm upgrade my-nginx bitnami/nginx -f values.yaml -f values.prod.yaml
В values.yaml указывают количество реплик, используемые образы, ресурсы, порты и другие параметры.
Передача параметров через командную строку
Для быстрых изменений можно задавать значения прямо в команде:
helm install my-nginx bitnami/nginx --set replicaCount=3
Если значение должно быть строго строкой, используется --set-string:
helm install my-nginx bitnami/nginx --set-string image.tag=latest
Если нужно передать содержимое файла, например сертификат или конфигурацию, применяется --set-file:
helm install my-nginx bitnami/nginx --set-file tls.crt=cert.pem
Работа с существующими значениями
При обновлении релиза Helm по умолчанию использует новые значения, полностью заменяя старые. Но порой требуется сохранить текущую конфигурацию и изменить только часть параметров. Для этого используется:
helm upgrade my-nginx bitnami/nginx --reuse-values
Если наоборот нужно сбросить все текущие значения и вернуться к настройкам чарта по умолчанию, используется:
helm upgrade my-nginx bitnami/nginx --reset-values
Просмотр примененных значений
Helm хранит значения, с которыми был установлен или обновлен релиз. Их можно посмотреть в любой момент:
helm get values my-nginx
7. Проверка и предварительный просмотр установки
С Helm можно заранее посмотреть, что будет установлено в кластер, и выявить ошибки еще до реального деплоя.
Проверка чарта на ошибки
Перед установкой или обновлением чарта есть смысл проверить его структуру и шаблоны:
helm lint my-chart
Команда проанализирует чарт и сообщит о возможных проблемах: синтаксических ошибках, неправильных значениях и нарушениях рекомендаций.
Просмотр итоговых манифестов
Чтобы увидеть, какие Kubernetes-ресурсы будут созданы, можно сгенерировать манифесты без применения к кластеру:
helm template my-nginx bitnami/nginx
Helm подставит значения и выведет готовые YAML-файлы.
Пробный запуск установки
Для более полной проверки используется режим пробного запуска:
helm install my-nginx bitnami/nginx --dry-run --debug
Helm выполнит все вычисления, покажет создаваемые ресурсы и возможные ошибки, но не будет ничего применять в кластере. Флаг --debug добавляет подробный вывод, полезный при диагностике.
Тот же подход работает и для обновлений:
helm upgrade my-nginx bitnami/nginx — dry-run — debug
Сравнение изменений перед обновлением
При частых обновлениях важно понимать, что изменится. Для этого обычно используют плагин helm diff, который показывает разницу между текущим состоянием релиза и новой версией:
helm diff upgrade my-nginx bitnami/nginx
8. Работа с зависимостями чартов
В Helm чарт редко существует сам по себе. Чаще приложение зависит от других компонентов: базы данных, очереди, кеша или вспомогательных сервисов. Helm позволяет описывать такие зависимости прямо в чарте и управлять ими централизованно.
Зависимости чарта указываются в файле Chart.yaml. В нем перечисляются связанные чарты, их версии и источники. Пример зависимости от PostgreSQL из репозитория Bitnami выглядит так:
[crayon-6985edbfc94ab173667579/]Helm использует это описание, чтобы понять, какие дополнительные чарты нужны для работы основного приложения.
Параметры зависимых чартов настраиваются через values.yaml основного чарта. Как правило, для этого используется ключ с именем зависимости (как в Chart.yaml). Например, чтобы задать имя БД, пользователя и размер диска для postgresql, можно добавить:
[crayon-6985edbfc94bb827605099/]Если у зависимости задан alias в Chart.yaml, то настройки задаются по алиасу.
Для более точного контроля можно указывать condition в Chart.yaml и включать/выключать зависимость через values.yaml. Например:
Тогда в values.yaml:
[crayon-6985edbfc94c0339508078/]Так вы централизованно управляете и самим фактом установки зависимости, и ее настройками — из одного набора values.
Загрузка и обновление зависимостей
После добавления или изменения зависимостей их необходимо загрузить локально. Для этого используется команда:
helm dependency update
Helm скачает все указанные зависимости и поместит их в каталог charts/. Одновременно будет обновлен файл Chart.lock, в котором фиксируются точные версии зависимостей.
Если зависимости уже описаны и нужно просто восстановить их из Chart.lock, применяется команда:
helm dependency build
Она полезна в CI/CD или при сборке чарта на новом окружении, где важно использовать строго зафиксированные версии.
Просмотр зависимостей
Чтобы увидеть, какие зависимости определены у чарта и в каком они состоянии, используется команда:
helm dependency list
Команда покажет список зависимостей, их версии и источники, что помогает быстро проверить корректность конфигурации.
Управление зависимостями через values
Зависимости можно включать или отключать с помощью значений в values.yaml. Обычно это делается через параметр enabled. Например, если база данных нужна не всегда, ее можно отключить для определенных окружений:
postgresql:
enabled: false
9. Упаковка и публикация своих чартов
Helm подходит не только для установки готовых решений, но и для распространения собственных приложений. Процесс обычно сводится к подготовке чарта, упаковке его в архив, и публикации в Git-репозитории или OCI- репозитории.
Создание базового чарта
Можно создать новый част, сгенерировав базовый набор шаблонов:
helm create my-chart
Helm сгенерирует каталог с базовой структурой, примерами шаблонов и файлом values.yaml. Этот шаблон обычно дорабатывают под конкретное приложение, удаляя лишнее и настраивая параметры.
Упаковка чарта
Подготовленный чарт можно упаковать в архив .tgz:
helm package my-chart
В результате будет создан файл вида my-chart-0.1.0.tgz. Версия берется из Chart.yaml. Перед упаковкой обычно обновляют номер версии и проверяют корректность чарта:
helm lint my-chart
Публикация через OCI-репозиторий
Современный Helm поддерживает публикацию чартов в OCI-совместимые реестры, такие же, как используются для контейнерных образов. Сначала выполняется вход в реестр:
helm registry login registry.example.com
Затем чарт публикуется:
helm push my-chart-0.1.0.tgz oci://registry.example.com/helm

Как начать работу с Helm быстрее всего
Получите готовый Kubernetes-кластер за считаные минуты и запускайте Helm без проблем!
Рег.Облако избавит вас от трудоемкой настройки: все уже настроено и оптимизировано для работы с Helm. Вам не нужно вникать в развертывание и управление Kubernetes — просто зарегистрируйтесь, создайте кластер в панели управления и скачайте kubeconfig.
С reg.cloud вы сразу получаете:
- готовый кластер Kubernetes;
- обслуживание оборудования, поддержку кластера и обновление версии Kubernetes
Подключайте репозитории Helm, разворачивайте чарты — и сосредоточьтесь на разработке.
Заключение
Helm позволяет кардинально изменить подход к развертыванию и управлению приложениями, запускаемыми в Kubernetes: вместо ручной работы с десятками YAML-файлов вы получаете удобную систему версионированных чартов, которая делает процессы предсказуемыми и масштабируемыми.
В этой статье мы рассмотрели, как работать с чартами и репозиториями, управлять релизами, настраивать значения, проверять изменения перед установкой и использовать откаты. Теперь вы сможете снизить количество ручных действий и избежать ошибок при разворачивании приложений в Kubernetes-кластеры.
Helm хорошо вписывается как в локальную разработку, так и в рабочие окружения, включая автоматизированные пайплайны. Он помогает держать инфраструктуру в понятном состоянии и ускоряет работу команд, которым важно стабильное и повторяемое развертывание приложений.

FAQ
Что такое helm?
Helm — это менеджер пакетов, который упрощает установку, обновление и управление приложениями в кластере Kubernetes.
Как Helm узнает, какой кластер использовать?
Helm сам по себе не выбирает кластер. Он берет текущий контекст из файла конфигурации Kubernetes и работает с тем кластером, который выбран в этом контексте.
Проверить, какой кластер используется, можно командой:
kubectl config current-context
Как отслеживать изменения в чартах с помощью Helm?
Helm отслеживает изменения через историю релизов. Каждая установка, обновление или откат чарта создает новую ревизию релиза, которую Helm сохраняет. Это позволяет видеть, что и когда менялось, и при необходимости возвращаться к предыдущему состоянию.
Основные команды:
helm history — показывает список всех изменений релиза;helm get values — отображает значения, с которыми был выполнен деплой;helm get manifest — показывает примененные Kubernetes-манифесты;helm rollback — возвращает релиз к выбранной версии.
Как настроить Helm для автоматического обновления чартов?
В пайплайне добавьте :
helm repo update
helm upgrade --install my-app repo/chart -n mynamespace -f values.yaml
Какие плагины можно использовать для работы с Helm?
Helm можно расширять с помощью плагинов. Они бывают разными по назначению — каждый решает свою задачу и расширяет стандартные возможности Helm. Например:
helm diff— показывает разницу между текущим релизом и измененным чартом перед обновлением.helm secrets— позволяет хранить зашифрованные значения (values.yaml) и безопасно использовать секреты.helmfile— управляет группами релизов через один файл с декларативной конфигурацией.helm uninstall cleanup— автоматически удаляет связанные сущности при удалении релиза.helm autoupdate— помогает следить за новыми версиями чартов и обновлять их.helm chart test— добавляет удобные команды для тестирования чарта.