Если вы пришли из сферы разработки, вы, вероятно, знакомы с термином «пакетный менеджер» (Package Manager). Пакетные менеджеры позволяют устанавливать зависимости, обновлять и откатывать версии и так далее. В этом руководстве мы рассмотрим очень популярный пакетный менеджер для Kubernetes, под названием Helm.
Helm помогает управлять приложениями Kubernetes. С помощью Helm вы можете определить приложение Kubernetes, указав метаданные приложения, зависимости и конфигурации. Helm также может устанавливать приложения в Kubernetes, а также обновлять и откатывать их версии. Наконец, вы можете поделиться своим приложением с другими, используя файл Helm. В этом руководстве мы покажем вам, как установить Helm 3, а также настроить, обновить, откатить и управлять чартами и релизами в ОС Windows.
Давайте начнем!
Предварительные требования
Прежде чем мы начнем руководство, вам необходимо убедиться, что у вас установлены следующие компоненты:
-
Если у вас не настроен Kubernetes на Windows, самый простой способ начать — использовать Docker Desktop. Перейдите на https://www.docker.com/products/docker-desktop. Скачайте и установите Docker Desktop. В этом руководстве мы будем работать с Windows. Поэтому нам понадобится установить WSL 2 Backend. Это подсистема Linux для Windows, которая обеспечивает поддержку Docker:

Как только Docker Desktop будет готов, перейдите в Settings -> Kubernetes, и отметьте опцию Enable Kubernetes:


Чтобы проверить, все ли работает правильно, откройте терминал или PowerShell (в зависимости от того, что вы используете) и введите следующую команду:
|
1 |
kubectl |
Если вы видите следующий вывод, значит, все готово к работе:

Кроме того, если вы решите работать на Ubuntu, вы можете воспользоваться нашим подробным руководством: Как установить и использовать Kubernetes на Ubuntu 20.04.
Кроме того, перед тем как начать процесс установки, давайте рассмотрим некоторые ключевые термины, связанные с Helm.
-
Чарты
YAML-файлы Kubernetes упаковываются в чарты Helm.
-
Репозитории Helm
Helm поддерживает работу с репозиториями. Репозиторий Helm — это место, где хранятся чарты Helm, чтобы другие могли их использовать. Helm позволяет создавать собственные репозитории, а также поддерживает сторонние репозитории.
-
Tiller
Tiller — это серверный компонент Helm. Его необходимо установить в кластере Kubernetes. Он принимает чарт Helm и соответствующим образом настраивает кластер.
Вы также можете ознакомиться с нашей статьей в блоге, в которой представлен подробный обзор Helm и объясняются методы Helm по упрощению развертывания приложений в Kubernetes.
Теперь мы готовы начать!
Шаг 1. Установка Helm 3
Установка Helm 3 — это простой процесс. Релизы доступны на странице Helm на GitHub. Вы можете скачать нужный релиз в зависимости от выбранной вами ОС. В этом руководстве мы будем использовать ОС Windows, поэтому для Windows выполните следующие шаги:
-
На странице GitHub скачайте исполняемые файлы Helm для Windows.
-
После завершения загрузки вы найдете ZIP-архив в папке Загрузки или там, куда вы его скачали.
-
Затем переместите этот архив в удобное место и распакуйте его. Вы должны найти файл helm.exe в распакованном содержимом:

-
Скопируйте путь к папке и добавьте его в переменную PATH в системных переменных среды.
-
После этого откройте терминал и введите следующую команду:
|
1 |
helm |
Если вы видите следующий вывод, значит, установка Helm завершена. После этого вы можете перейти к следующим шагам:

Шаг 2. Настройка репозиториев и установка чарта Helm
Helm поддерживает доступ к репозиториям и управление ими. В репозиториях хранятся чарты Helm. Изначально у Helm нет собственного репозитория. Вместо этого Helm поощряет менеджеров и DevOps-специалистов создавать свои собственные репозитории. Это означает, что если вы хотите использовать MongoDB в своем кластере Kubernetes, вам придется самостоятельно добавить его в репозиторий Helm. Чтобы помочь вам найти репозитории, вы можете использовать Artifact.io. Это каталог с открытым исходным кодом для всех чартов Helm, управляемый CNCF.
Ниже мы покажем вам, как настроить репозиторий, а также скачать и установить программное обеспечение. В качестве примера мы возьмем установку MongoDB. Предположим, вам нужно установить MongoDB в ваш кластер Kubernetes. Для установки выполните следующие шаги:
-
Сначала перейдите на https://artifacthub.io.
-
Затем выполните поиск по запросу MongoDB. После поиска вы увидите, что доступно множество вариантов. Тот, который нас интересует, — это MongoDB by Bitnami:

-
Когда поиск завершится, вы увидите различные варианты. Напротив каждого чарта вы можете увидеть издателя, версию и другую соответствующую информацию. Как только вы найдете нужный чарт, вам нужно выбрать его. Здесь мы нажимаем на MongoDB by Bitnami:

-
Теперь фактически может начаться техническая часть. Если вы посмотрите на общее описание, то увидите, что там есть хорошее руководство для всех, кто хочет установить любую из служб. Вы можете ознакомиться с различными опциями, конфигурациями, параметрами, тем, как удалить чарт, и всем остальным, о чем вам может понадобиться информация. Найдите кнопку Install и нажмите ее:

-
Вот все, что вам нужно для установки MongoDB. Сначала вам нужно добавить репозиторий и затем установить чарт. Чтобы добавить репозиторий, откройте терминал и введите команду:
|
1 |
helm repo add bitnami https://charts.bitnami.com/bitnami |
Вы увидите следующий вывод:

Теперь, когда репозиторий настроен, вам нужно установить чарт. Скопируйте команду из диалогового окна и запустите ее:
|
1 |
helm install my-mongodb bitnami/mongodb --version 10.23.10 |
Как только процесс завершится, все будет готово для работы с MongoDB.
Шаг 3: Управление релизами
В разработке программного обеспечения управление релизами имеет жизненно важное значение. Всегда возникают моменты, когда необходимо обновиться или откатиться к предыдущим версиям. К счастью, управление релизами в Helm — относительно простой процесс. Helm сохраняет номера версий, поэтому вы всегда можете откатиться к предыдущей версии. Точно так же, предположим, что ваше приложение развернуто и работает, и вам нужно внести изменения в конфигурацию — Helm поддерживает и это. Ниже мы рассмотрим некоторые рекомендации, которые помогут вам выполнить эти операции.
-
Как обновить приложение
Предположим, в вашем values.YAML файле вы указываете, что вам необходимо запустить два экземпляра приложения. Это может быть связано с тем, что ваше приложение должно быть высокодоступным. Но позже вы понимаете, что приложению необходимо иметь три экземпляра. Без Helm вам придется сначала остановить приложение, а затем настроить и развернуть его заново. С помощью Helm вы можете сначала внесить изменения в values.YAML файл, а затем просто выполнить команду ниже. В каталоге, где находятся файлы Helm, выполните следующую команду:
|
1 |
helm upgrade <app-name> |
-
Как откатить релиз
Теперь предположим, что ваш релиз сломался. Возможно, вы настроили неправильные номера портов или пути. Чтобы откатиться к любой предыдущей версии, все, что вам нужно сделать, это выполнить команду ниже, и тогда Helm вернет релиз к предыдущей версии:
|
1 |
C:\> helm rollback <release> |
Helm позаботится обо всех релизах и версионировании. Это одно из самых больших преимуществ использования Helm с Kubernetes. Чтобы увидеть все релизы любого приложения, выполните команду ниже в каталоге, содержащем чарты Helm и файлы YAML:
|
1 |
helm history RELEASE |
Шаг 4: Создание собственного чарта
Наконец, теперь, когда вы освоились с Helm и понимаете, как он работает, пришло время создать свой собственный чарт. Создав свой собственный чарт, вы сможете легко распространять свое приложение, а также размещать его в любом репозитории. Создание чарта — довольно простой процесс, если вы будете следовать шагам, которые мы опишем ниже. Сначала откройте терминал и выполните команду ниже:
|
1 |
helm create <chart-name> |
Это создаст каталог с указанным вами именем. Мы используем имя my-app. Давайте посмотрим на содержимое папки:
|
1 2 |
cd my-app ls |
Вы получите следующую структуру:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
charts/ templates/ ├─ tests/ │ ├─ test-connection.yaml ├─ deployment.yaml ├─ hpa.yaml ├─ ingress.yaml ├─ NOTES.txt ├─ service.yaml ├─ serviceaccount.yaml ├─ _helpers.tpl ├─ .helmignore ├─ Chart.yaml ├─ values.yaml |
Вот краткое описание содержимого в выводе:
- папка charts – используется для добавления зависимых чартов.
- папка templates – конфигурация, которая будет развернута в кластере.
- YAML-файл – схема структуры чарта Helm.
- YAML-файл – информация о форматировании для настройки чарта.
Затем выполните следующие шаги для установки и настройки вашего чарта:
-
Настройка образа и его загрузки (pull)
Откройте values.YAML файл. Найдите здесь узел image. Затем вы можете настроить его по своему усмотрению. Возможные значения: IfNotPresent, Always, Latest. Полный набор значений можно найти в официальной документации.
-
Переопределение имени чарта
Этот шаг необязателен, поэтому при желании вы можете его пропустить:

-
Имя службы
Откройте
values.YAML файл и найдите
serviceName. Затем добавьте желаемое имя. Хорошо иметь подготовленное имя перед установкой чарта:

-
Установка чарта
Наконец, для установки чарта выполните следующую команду:
|
1 |
helm install <full name override> <chart name>/ --values <chart name>/values.yaml |
Мы советуем вам внимательно изучить все доступные параметры для настройки вашего чарта перед его развертыванием в кластере.
Почему разработчики любят Helm
Helm набирает популярность среди разработчиков и DevOps-специалистов, которым время от времени приходится запускать и останавливать развертывания. Вот некоторые из основных преимуществ Helm:
-
Helm упрощает процесс развертывания. Он не требует изучения чего-то нового, скорее, существующие YAML-развертывания становятся легко настраиваемыми для пользователя.
-
Вместо частого изменения конфигурации, например, количества кластеров или портов, Helm делает ее легко настраиваемой. Все, что нужно сделать пользователю, — это обновить значения в values.YAML файле.
-
Helm позволяет делиться приложением с другими пользователями, упаковывая его в репозитории.
Заключение
В этом руководстве мы рассмотрели, как настроить менеджер пакетов Helm с нуля на Windows. Мы изучили различные ключевые концепции, которые необходимо четко понимать для эффективного использования возможностей Helm. Мы также рассмотрели различные функции, доступные в исследованных репозиториях Helm. Теперь вы должны чувствовать себя уверенно при работе с Helm и сможете внедрить его в свой следующий проект или развертывание Kubernetes.
Чтобы еще больше расширить свои знания о Kubernetes и его возможностях, вы можете ознакомиться с другими руководствами в нашем блоге:
- Знакомство с Kubernetes
- Как создать кластер Kubernetes с помощью Kubeadm на Ubuntu 18.04
- Развертывание PHP-приложения в кластере Kubernetes на Ubuntu 18.04
Приятной работы!
Комментарии
Комментариев пока нет. Будьте первым.