Helm — это инструмент для управления Kubernetes-приложениями, упрощающий развертывание, обновление и обслуживание сложных приложений, состоящих из множества Kubernetes-объектов. По своей сути, Helm можно сравнить с пакетным менеджером для Kubernetes, таким как apt или yum в Linux, но адаптированным для работы с Kubernetes-кластерами.
Helm решает несколько ключевых задач:
Приложения могут состоять из десятков или сотен объектов Kubernetes, таких как поды, сервисы, конфигурации и другие. Helm объединяет их в единый пакет, называемый чартом, который можно развернуть одной командой. Этот подход значительно снижает сложность ручной настройки приложений.
Каждый чарт может иметь несколько версий, что позволяет легко откатываться к предыдущей версии или обновлять приложение. Helm поддерживает управление версиями, отслеживание изменений развернутых приложений (релизов) и позволяет выполнять откаты при необходимости.
Helm использует шаблоны для генерации конфигурационных файлов Kubernetes, что облегчает настройку параметров, таких как количество реплик, настройки сетевого доступа, базы данных и другие переменные. Эти настройки хранятся в специальном конфигурационном файле — values.yaml. Это позволяет использовать один и тот же чарт в разных окружениях (разработка, тестирование, продакшн) с минимальными изменениями.
Чарты хранятся в репозиториях, которые могут быть как публичными, так и частными. Helm позволяет добавлять различные репозитории, обновлять их и устанавливать приложения напрямую. Например, популярный репозиторий Bitnami содержит множество готовых к использованию чартов для различных сервисов.
Helm тесно связан с версией Kubernetes, поэтому важно выбрать версию, совместимую с вашей версией кластера. Вы можете ознакомиться с таблицей совместимости версий Helm и Kubernetes в официальной документации.
- Для Kubernetes версий 1.31.x - 1.28.x рекомендуется использовать последнюю версию Helm (3.16.x).
- Для Kubernetes версий 1.27.x - 1.26.x требуется версия Helm 3.14.x.
Linux
Чтобы установить Helm на Linux, можно использовать официальный скрипт для автоматической установки.
Скачайте установочный скрипт и измените его права на выполнение:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 get_helm.sh
Запустите скрипт для установки последней версии Helm:
./get_helm.sh
Если у вас Kubernetes версии 1.27.x - 1.26.x, укажите нужную версию Helm:
./get_helm.sh -v 3.14.1
Для установки Helm через системный пакетный менеджер на Ubuntu, выполните следующие шаги:
Добавьте ключ подписи репозитория Helm:
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
Установите пакет apt-transport-https
, если он не был установлен ранее:
sudo apt install apt-transport-https --yes
Добавьте репозиторий Helm в список источников APT:
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 update
Теперь, когда все подготовительные шаги выполнены, можно установить Helm:
sudo apt install helm
Эта команда устанавливает последнюю доступную версию Helm из репозитория.
Если у вас кластер Kubernetes версии 1.27.x - 1.26.x, установите соответствующую версию Helm:
sudo apt install helm=3.14.2-1
Проверьте корректность установки, выполнив:
helm version
Windows
Чтобы установить Helm на Windows, выполните следующие шаги:
Запустите PowerShell от имени администратора.
Установите Helm с помощью следующей команды:
winget install Helm.Helm
Для Kubernetes версий 1.27.x - 1.26.x:
winget install Helm.Helm -v 3.14.1
Проверьте версию Helm:
helm version
MacOS
Чтобы установить Helm на MacOS, можно использовать официальный скрипт для автоматической установки.
Скачайте установочный скрипт и измените его права на выполнение:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 get_helm.sh
Запустите скрипт для установки последней версии Helm:
./get_helm.sh
Если у вас Kubernetes версии 1.27.x - 1.26.x, укажите нужную версию Helm:
./get_helm.sh -v 3.14.1
Если вы используете Homebrew, Helm можно установить с его помощью. Обратите внимание, что в репозиториях Homebrew доступна только последняя версия Helm. Для установки выполните команду:
brew install helm
Проверьте версию Helm:
helm version
Helm использует репозитории для хранения и распространения чартов — пакетов приложений, которые можно устанавливать в Kubernetes. Репозитории помогают управлять приложениями из централизованных источников, что упрощает процессы установки, обновления и удаления приложений.
Чтобы установить приложение из удаленного репозитория, его нужно сначала добавить в список доступных источников. Это делается с помощью команды helm repo add
. Например, для добавления популярного репозитория Bitnami выполните следующую команду:
helm repo add bitnami https://charts.bitnami.com/bitnami
Helm поддерживает как публичные, так и частные репозитории. Для работы с частными репозиториями могут потребоваться учетные данные для аутентификации, такие как токен или логин с паролем.
Иногда чарты в репозиториях обновляются, и чтобы убедиться, что у вас актуальные версии, необходимо периодически обновлять информацию о репозиториях. Для этого используется команда:
helm repo update
Эта команда синхронизирует ваш локальный индекс чартов с актуальным содержимым удаленных репозиториев.
Вы можете посмотреть список всех подключенных репозиториев с помощью команды:
helm repo list
Пример вывода:
Если какой-то репозиторий больше не нужен, его можно удалить с помощью команды helm repo remove
. Например, чтобы удалить репозиторий Bitnami, выполните:
helm repo remove bitnami
Эта команда удаляет репозиторий только из локальной конфигурации Helm. Сами чарты и установленные приложения при этом не затрагиваются.
После настройки репозиториев вы можете искать и устанавливать приложения в Kubernetes с помощью Helm.
Для поиска нужного чарта в подключенных репозиториях используйте команду:
helm search repo <название_приложения>
Например, для поиска NGINX выполните:
helm search repo nginx
Для установки найденного приложения выполните команду:
helm install <имя_релиза> <репозиторий>/<название_чарта>
Например, для установки NGINX из репозитория Bitnami:
helm install my-nginx bitnami/nginx
Чтобы проверить состояние приложения, выполните:
kubectl get pods
Для получения информации о релизе:
helm status <имя_релиза>
Для изменения параметров чарта используйте:
helm install my-nginx bitnami/nginx --set service.type=NodePort
Чтобы удалить приложение и его ресурсы:
helm uninstall <имя_релиза>
Helm-чарты позволяют упаковать Kubernetes-приложения в удобный пакет, включающий все необходимые ресурсы для их развертывания и управления. Чарты используются для автоматизации создания, обновления и удаления приложений в Kubernetes, что делает управление ими более простым и гибким.
Для создания нового чарта используйте команду:
helm create <имя_чарта>
Helm автоматически сгенерирует базовую структуру директорий и файлов, которые содержат необходимые шаблоны и конфигурации для развертывания приложения в Kubernetes.
Chart.yaml
Главный файл чарта, содержащий метаданные: название, версия, описание и версия приложения. Также может включать информацию о зависимостях, если приложение зависит от других чартов.
Пример использования:
Указывает, какое приложение разворачивается, и его версию.
Упрощает управление версиями чарта и отслеживание изменений.
values.yaml
Файл с параметрами по умолчанию, который используется для задания значений, применяемых к шаблонам чарта для генерации конечных манифестов Kubernetes.
Пример использования:
Задает параметры, такие как количество реплик, тип сервиса, образ контейнера.
Позволяет переопределять значения через флаг --set
или дополнительный файл при установке.
templates/
В этой директории хранятся шаблоны YAML-файлов Kubernetes, определяющие объекты (поды, деплойменты, сервисы и т.д.), которые будут созданы при установке чарта. Шаблоны используют язык Go для динамической генерации манифестов на основе значений из values.yaml
.
Пример использования:
Шаблоны для создания объектов Kubernetes (например, deployment.yaml
, service.yaml
).
Логика для гибкой настройки ресурсов (например, количество реплик или тип сервиса).
charts/
Директория для зависимостей — других чартов, необходимых для работы вашего приложения. Зависимости могут быть установлены локально или загружены из удаленных репозиториев.
Пример использования:
Зависимости загружаются командой helm dependency update
, если они указаны в Chart.yaml
.
.helmignore
Этот файл работает аналогично .gitignore
, исключая файлы и директории при упаковке чарта в архив.
Пример использования:
Исключение ненужных файлов (например, документации или временных файлов), чтобы они не попали в финальный пакет.