Больше не нужно искать работу мечты — присоединяйтесь к команде Клауда
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

Helm

Helm — это инструмент для управления Kubernetes-приложениями, упрощающий развертывание, обновление и обслуживание сложных приложений, состоящих из множества Kubernetes-объектов. По своей сути, Helm можно сравнить с пакетным менеджером для Kubernetes, таким как apt или yum в Linux, но адаптированным для работы с Kubernetes-кластерами.

Helm решает несколько ключевых задач:

Упрощение развертывания

Приложения могут состоять из десятков или сотен объектов Kubernetes, таких как поды, сервисы, конфигурации и другие. Helm объединяет их в единый пакет, называемый чартом, который можно развернуть одной командой. Этот подход значительно снижает сложность ручной настройки приложений.

Управление версиями приложений

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

Повторное использование конфигураций

Helm использует шаблоны для генерации конфигурационных файлов Kubernetes, что облегчает настройку параметров, таких как количество реплик, настройки сетевого доступа, базы данных и другие переменные. Эти настройки хранятся в специальном конфигурационном файле — values.yaml. Это позволяет использовать один и тот же чарт в разных окружениях (разработка, тестирование, продакшн) с минимальными изменениями.

Централизованное управление репозиториями

Чарты хранятся в репозиториях, которые могут быть как публичными, так и частными. Helm позволяет добавлять различные репозитории, обновлять их и устанавливать приложения напрямую. Например, популярный репозиторий Bitnami содержит множество готовых к использованию чартов для различных сервисов.

Установка Helm

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

Установка через репозиторий на Ubuntu

Для установки 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

Image1

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

Image3

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

Если вы используете Homebrew, Helm можно установить с его помощью. Обратите внимание, что в репозиториях Homebrew доступна только последняя версия Helm. Для установки выполните команду:

brew install helm

Проверьте версию Helm:

helm version

Image4

Настройка репозиториев Helm

Helm использует репозитории для хранения и распространения чартов — пакетов приложений, которые можно устанавливать в Kubernetes. Репозитории помогают управлять приложениями из централизованных источников, что упрощает процессы установки, обновления и удаления приложений.

Добавление репозитория

Чтобы установить приложение из удаленного репозитория, его нужно сначала добавить в список доступных источников. Это делается с помощью команды helm repo add. Например, для добавления популярного репозитория Bitnami выполните следующую команду:

helm repo add bitnami https://charts.bitnami.com/bitnami

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

Обновление репозиториев

Иногда чарты в репозиториях обновляются, и чтобы убедиться, что у вас актуальные версии, необходимо периодически обновлять информацию о репозиториях. Для этого используется команда:

helm repo update

Эта команда синхронизирует ваш локальный индекс чартов с актуальным содержимым удаленных репозиториев.

Просмотр доступных репозиториев

Вы можете посмотреть список всех подключенных репозиториев с помощью команды:

helm repo list

Пример вывода: 

Image2

Удаление репозитория

Если какой-то репозиторий больше не нужен, его можно удалить с помощью команды helm repo remove. Например, чтобы удалить репозиторий Bitnami, выполните:

helm repo remove bitnami

Эта команда удаляет репозиторий только из локальной конфигурации Helm. Сами чарты и установленные приложения при этом не затрагиваются.

Установка приложений с помощью 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, исключая файлы и директории при упаковке чарта в архив.
    Пример использования:

    • Исключение ненужных файлов (например, документации или временных файлов), чтобы они не попали в финальный пакет.

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев