Helm 3 в Kubernetes: установка, настройка чартов и WordPress
Helm 3 — популярный менеджер пакетов для Kubernetes, который упрощает установку, настройку и обновление приложений в кластере. С его помощью можно развертывать сложные сервисы, управлять конфигурацией через YAML-файлы и повторно использовать готовые шаблоны Kubernetes-манифестов.
В этой статье рассмотрим, как установить Helm 3, подключить репозитории чартов, найти нужное приложение и развернуть его в Kubernetes. Также разберем редактирование Helm-чартов, настройку Ingress и практический пример установки WordPress.
Содержание
- Цели статьи
- Что такое Helm и зачем он нужен
- Установка Helm 3 в Kubernetes
- Установка приложений через Helm
- Редактирование Helm-чартов
- Установка WordPress в Kubernetes
- Заключение
1. Цели статьи
После изучения материала вы узнаете:
- Что такое Helm и как он упрощает управление приложениями в Kubernetes.
- Как установить Helm 3 в Linux и проверить его работоспособность.
- Как подключать репозитории и искать готовые Helm-чарты.
- Как устанавливать, обновлять и удалять приложения с помощью Helm.
- Как изменять параметры чартов для настройки приложений под собственную инфраструктуру.
- Как развернуть WordPress в Kubernetes и организовать доступ к приложению.
Примеры ориентированы на Linux-систему с установленными kubectl и работающим кластером Kubernetes.
2. Что такое Helm и зачем он нужен
При работе с Kubernetes даже относительно простое приложение может потребовать нескольких YAML-манифестов. Например, для запуска веб-сервиса могут понадобиться Deployment, Service, ConfigMap, Secret, PersistentVolumeClaim и Ingress.
При увеличении количества приложений становится сложнее поддерживать конфигурацию, повторять развертывание в разных окружениях и отслеживать изменения.
Helm решает эту задачу, выступая в роли менеджера пакетов для Kubernetes. Он позволяет объединять шаблоны Kubernetes-манифестов и параметры приложения в единый пакет — Helm chart.
С помощью Helm можно:
- Устанавливать приложения из готовых чартов.
- Настраивать приложения через файлы
values.yaml. - Обновлять существующие релизы.
- Откатываться к предыдущим ревизиям релиза.
- Управлять зависимостями между чартами.
- Использовать одинаковые шаблоны для тестовой и production-среды.
Основные понятия Helm
Chart — пакет с шаблонами Kubernetes-ресурсов и настройками приложения.
Repository — репозиторий, в котором публикуются Helm-чарты.
Release — установленный экземпляр чарта в кластере Kubernetes.
Values — параметры, с помощью которых настраивается развертывание приложения.
Например, один и тот же чарт можно использовать для запуска приложения в нескольких окружениях, меняя количество реплик, настройки Ingress, ресурсы контейнеров и другие параметры без ручного редактирования каждого Kubernetes-манифеста.
В Helm 3 клиентская часть работает без отдельного серверного компонента Tiller, который использовался в Helm 2. Это упрощает архитектуру и управление доступом к Kubernetes API.
3. Установка Helm 3 в Linux
Установить Helm можно с помощью пакетного менеджера, официального установочного скрипта или готового бинарного файла. Для Linux удобен вариант с официальным архивом.
Сначала скачайте актуальную стабильную версию Helm 3 с официальной страницы загрузок:
https://github.com/helm/helm/releases
Пример установки для Linux x86-64:
curl -LO https://get.helm.sh/helm-v3.16.4-linux-amd64.tar.gztar -xzf helm-v3.16.4-linux-amd64.tar.gzsudo install linux-amd64/helm /usr/local/bin/helm
Версия в команде приведена для примера. Для новой установки используйте актуальный поддерживаемый выпуск Helm 3, если он соответствует требованиям вашей инфраструктуры.
Проверим установленную версию:
helm version
Также убедимся, что kubectl подключен к нужному кластеру:
kubectl cluster-infokubectl get nodes
Если команды выполняются без ошибок, можно переходить к работе с Helm-чартами.
Подключение репозитория Helm
Helm позволяет получать приложения из репозиториев чартов. Важно учитывать, что старый репозиторий stable, ранее размещавшийся по адресу kubernetes-charts.storage.googleapis.com, больше не подходит для новых установок.
В качестве примера используем репозиторий Bitnami:
helm repo add bitnami https://charts.bitnami.com/bitnamihelm repo update
Посмотреть подключенные репозитории можно командой:
helm repo list
Найти доступные чарты:
helm search repo wordpress
Для поиска по каталогу Artifact Hub используйте:
helm search hub wordpress
При выборе чарта проверяйте его совместимость с версией Kubernetes, дату обновления, требования к ресурсам, настройки безопасности и доступность необходимых образов контейнеров.
4. Установка приложений через Helm 3
Рассмотрим основные команды, необходимые для установки и управления приложениями в Kubernetes.
Установка приложения
Перед установкой создадим отдельное пространство имен:
kubectl create namespace myapp
После выбора подходящего чарта приложение устанавливается командой:
helm install my-release bitnami/wordpress \ --namespace myapp
Здесь my-release — имя релиза, а bitnami/wordpress — имя чарта из подключенного репозитория.
Перед запуском приложения рекомендуется изучить доступные параметры:
helm show values bitnami/wordpresshelm show chart bitnami/wordpress
Чтобы посмотреть шаблоны Kubernetes-манифестов, которые будут сформированы чартом, выполните:
helm template my-release bitnami/wordpress \ --namespace myapp
Это позволяет предварительно проверить конфигурацию без установки ресурсов в кластер.
Проверка состояния приложения
Посмотреть установленные релизы:
helm list -A
Проверить ресурсы в пространстве имен:
kubectl get all -n myappkubectl get pods -n myapp
Для наблюдения за созданием подов используйте:
kubectl get pods -n myapp -w
Если приложение не запускается, проверьте состояние подов, события и логи:
kubectl describe pod <pod-name> -n myappkubectl logs <pod-name> -n myappkubectl get events -n myapp --sort-by=.metadata.creationTimestamp
Обновление приложения
После изменения параметров или подготовки новой конфигурации релиз можно обновить:
helm upgrade my-release bitnami/wordpress \ --namespace myapp
Чтобы установить приложение или обновить его, если релиз уже существует, можно использовать команду:
helm upgrade --install my-release bitnami/wordpress \ --namespace myapp
Если требуется откатить релиз, сначала посмотрите историю:
helm history my-release -n myapp
Затем выберите нужную ревизию:
helm rollback my-release 1 -n myapp
Число 1 здесь обозначает номер ревизии, к которой нужно вернуться.
Удаление приложения
Для удаления релиза выполните:
helm uninstall my-release -n myapp
Перед удалением приложений с постоянным хранилищем проверьте, какие PersistentVolumeClaim и PersistentVolume используются. Удаление релиза не следует считать гарантией удаления или сохранности данных: результат зависит от конфигурации чарта и политики хранения.
5. Редактирование Helm-чартов
Готовые чарты не всегда полностью соответствуют требованиям конкретной инфраструктуры. Например, может понадобиться включить Ingress, изменить количество реплик, настроить ресурсы контейнеров или активировать необходимые механизмы контроля доступа.
Для настройки обычно достаточно изменить параметры values.yaml, не редактируя шаблоны Kubernetes напрямую.
Получение параметров чарта
Посмотрим доступные настройки выбранного приложения:
helm show values bitnami/wordpress > wordpress-values.yaml
Откройте файл и найдите параметры, отвечающие за нужные функции. Их названия и структура зависят от конкретного чарта и его версии.
Например, фрагмент конфигурации может выглядеть так:
replicaCount: 2
Это лишь пример параметра: перед использованием необходимо проверить, поддерживает ли его выбранный чарт.
Для просмотра фактически примененных значений установленного релиза используйте:
helm get values my-release -n myapp
Для получения всех вычисленных значений:
helm get values my-release -n myapp --all
Настройка Ingress
Ingress позволяет организовать HTTP- и HTTPS-доступ к приложениям через настроенный Ingress Controller. Для работы этого механизма в кластере должен быть установлен и настроен соответствующий контроллер.
Пример типового фрагмента настроек чарта:
ingress: enabled: true hostname: app.example.com
Этот фрагмент подходит только для чартов, в которых предусмотрены именно такие параметры. Перед применением сверьтесь с helm show values и документацией выбранного приложения.
После изменения конфигурации выполните обновление релиза:
helm upgrade --install my-release bitnami/wordpress \ --namespace myapp \ -f wordpress-values.yaml
Проверьте созданные ресурсы:
kubectl get ingress -n myappkubectl get svc -n myapp
Проверка конфигурации перед установкой
Чтобы увидеть итоговые манифесты, сформированные из чарта и файла настроек, используйте:
helm template my-release bitnami/wordpress \ --namespace myapp \ -f wordpress-values.yaml
Для дополнительной проверки установки можно выполнить пробный запуск:
helm upgrade --install my-release bitnami/wordpress \ --namespace myapp \ -f wordpress-values.yaml \ --dry-run
Не храните пароли, токены и другие секреты в общедоступных файлах конфигурации или репозиториях исходного кода.
6. Установка WordPress в Kubernetes
WordPress — популярная система управления содержимым сайта, которую можно развернуть в Kubernetes с помощью Helm. Такой подход подходит для учебных стендов, тестирования и инфраструктур, в которых уже используются контейнеры и оркестрация.
Для работы WordPress обычно необходимы:
- Контейнер приложения WordPress.
- База данных MySQL или MariaDB.
- Постоянное хранилище для файлов, если оно требуется конфигурацией.
- Сервис Kubernetes для внутреннего доступа к приложению.
- При необходимости — Ingress и TLS-сертификат для публикации сайта.
Шаг 1. Подготовка пространства имен
Создадим отдельное пространство имен:
kubectl create namespace wordpress
Шаг 2. Подключение репозитория
Если репозиторий Bitnami еще не добавлен, подключите его:
helm repo add bitnami https://charts.bitnami.com/bitnamihelm repo update
Посмотрим доступные настройки чарта WordPress:
helm show values bitnami/wordpress
Перед установкой обязательно проверьте актуальность чарта, доступность образов и совместимость с вашим кластером. В зависимости от версии и текущего состояния репозитория может потребоваться использовать другую поддерживаемую сборку чарта.
Шаг 3. Настройка параметров
Создадим файл wordpress-values.yaml. Пример ниже показывает общую структуру конфигурации; названия параметров необходимо сверить с версией используемого чарта.
wordpressUsername: adminservice: type: ClusterIPingress: enabled: falsepersistence: enabled: true
Для реального развертывания также необходимо безопасно задать пароли WordPress и базы данных, проверить настройки PersistentVolume и определить, как будут храниться пользовательские файлы.
Не используйте примерные или заранее известные пароли в рабочем окружении. Для секретов предпочтительно использовать поддерживаемый вашей инфраструктурой механизм управления секретами.
Шаг 4. Установка WordPress
Установим приложение:
helm upgrade --install wordpress bitnami/wordpress \ --namespace wordpress \ -f wordpress-values.yaml
Посмотрим состояние ресурсов:
kubectl get pods -n wordpresskubectl get svc -n wordpresskubectl get pvc -n wordpress
Дождитесь, пока необходимые поды перейдут в состояние Running и будут готовы принимать запросы. Если запуск задерживается, проверьте события Kubernetes, состояние хранилища и логи контейнеров.
Шаг 5. Доступ к WordPress
Для тестового доступа можно использовать проброс порта:
kubectl port-forward \ -n wordpress \ svc/wordpress 8080:80
После запуска команды откройте в браузере:
Имя сервиса и порт необходимо сверить с выводом kubectl get svc -n wordpress, поскольку они могут различаться в зависимости от версии чарта.
Для постоянного доступа из сети настройте Ingress или внешний Service в соответствии с архитектурой кластера. Для публичного сайта рекомендуется использовать HTTPS, надежные пароли, резервное копирование базы данных и пользовательских файлов, а также регулярно проверять обновления приложения.
7. Заключение
Helm 3 значительно упрощает развертывание приложений в Kubernetes. Вместо ручного создания множества YAML-манифестов можно использовать готовые чарты, централизованно управлять параметрами и повторять установку в разных окружениях.
В статье мы рассмотрели установку Helm 3 в Linux, подключение репозиториев, поиск чартов, управление релизами и редактирование конфигурации через values.yaml. На примере WordPress разобрали основные этапы развертывания приложения и проверки его работоспособности.
Для дальнейшего изучения рекомендуется освоить создание собственных Helm-чартов, работу с зависимостями, управление секретами, проверку шаблонов и автоматизацию развертывания через CI/CD.
Helm — полезный инструмент для системных администраторов, DevOps-инженеров и разработчиков, которые хотят сделать управление приложениями в Kubernetes более предсказуемым, воспроизводимым и удобным.
Вас заинтересуют так же следующие новости
- Проверка Docker-образов на уязвимости с помощью Trivy и Copacetic
- Nginx как балансировщик нагрузки: настройка и конфигурация
- Bash set -euo pipefail: что означает и как использовать
- Команда find в Linux — поиск файлов и каталогов, примеры
- AWS Lambda Web Functions: новый способ запуска веб-приложений без серверов
- Exim 4.100: новая версия почтового сервера с поддержкой DMARC и расширенными возможностями
