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 <имя_релиза>