Tutorial

Установка программного обеспечения в кластерах Kubernetes с помощью диспетчера пакетов Helm 3

Kubernetes

Введение

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

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

С общим описанием Helm и его экосистемы пакетов можно ознакомиться в статье Знакомство с Helm.

Предварительные требования

В ходе данного обучающего руководства вам потребуется следующее:

  • Кластер Kubernetes с включенным контролем доступа на основе ролей (RBAC). Helm 3.1 поддерживает кластеры версий с 1.14 по 1.17. Дополнительную информацию можно найти на странице выпусков Helm.
  • Инструмент командной строки kubectl, установленный на локальном компьютере и настроенный для подключения к вашему кластеру. Дополнительную информацию об установке kubectl можно найти в официальной документации.

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

  • kubectl cluster-info

Отсутствие ошибок означает, что вы успешно подключились к кластеру. Если у вас есть доступ к нескольким кластерам с kubectl, убедитесь, что вы выбрали правильный контекст кластера:

  • kubectl config get-contexts
Output
CURRENT NAME CLUSTER AUTHINFO NAMESPACE * do-fra1-helm3-example do-fra1-helm3-example do-fra1-helm3-example-admin

В этом примере символ звездочки (*) показывает, что мы подключены к кластеру do-fra1-helm3-example. Чтобы переключаться между запущенными кластерами:

  • kubectl config use-context context-name

Когда вы будете подключены к нужному кластеру, перейдите к шагу 1 для начала установки Helm.

Шаг 1 — Установка Helm

Сначала мы установим утилиту командной строки helm на локальном компьютере. Helm предоставляет скрипт, который отвечает за процесс установки на MacOS, Windows или Linux.

Перейдите в директорию с возможностью записи и загрузите скрипт из репозитория Helm на GitHub:

  • cd /tmp
  • curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3

Сделайте скрипт исполняемым с помощью команды chmod:

  • chmod u+x get_helm.sh

Вы можете воспользоваться текстовым редактором, чтобы открыть скрипт и изучить его, чтобы убедиться в его безопасности. Когда вы будете удовлетворены, запустите его:

  • ./get_helm.sh

Возможно, вам придется ввести пароль. Введите его и нажмите ENTER, чтобы продолжить.

Итоговый результат будет выглядеть следующим образом:

Output
Downloading https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz Preparing to install helm into /usr/local/bin helm installed into /usr/local/bin/helm

Теперь мы установили Helm и готовы использовать его для установки первого чарта.

Шаг 2 — Установка чарта Helm

Пакеты программного обеспечения Helm называются чартами. Курируемый репозиторий чартов под названием stable в основном содержит распространенные чарты, которые можно посмотреть в их репозитории на GitHub. Helm не имеет соответствующих предварительных настроек, поэтому добавление следует выполнять вручную. Далее в качестве примера мы установим панель Kubernetes Dashboard.

Добавьте репозиторий stable, запустив следующую команду:

  • helm repo add stable https://kubernetes-charts.storage.googleapis.com

Результат будет выглядеть следующим образом:

Output
"stable" has been added to your repositories

Затем используйте helm для установки пакета kubernetes-dashboard из репозитория stable:

  • helm install dashboard-demo stable/kubernetes-dashboard --set rbac.clusterAdminRole=true

Параметр --set позволяет задавать переменные чарта, с помощью которых вы можете настраивать конфигурацию чарта. Здесь мы задаем для переменной rbac.clusterAdminRole значение true, чтобы предоставить Kubernetes Dashboard доступ ко всему кластеру целиком.

Вывод будет выглядеть следующим образом:

Output
NAME: dashboard-demo LAST DEPLOYED: Tue Mar 31 15:04:19 2020 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: ...

Обратите внимание на строку NAME, выделенную в примере вывода выше. В данном случае мы указали имя dashboard-demo. Это имя относится к выпуску. Выпуск Helm — это отдельное развертывание одного чарта с конкретной конфигурацией. Вы можете развернуть несколько выпусков одного чарта, используя отдельные конфигурации для каждого выпуска.

Вы можете вывести список всех выпусков в кластере:

  • helm list

Результат будет выглядеть примерно следующим образом:

Output
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION dashboard-demo default 1 2020-03-31 15:04:19.324774799 +0000 UTC deployed kubernetes-dashboard-1.10.1 1.10.1

Теперь вы можете использовать kubectl, чтобы подтвердить развертывание в кластере новой службы:

  • kubectl get services

Итоговый результат будет выглядеть следующим образом:

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-demo-kubernetes-dashboard ClusterIP 10.245.115.214 <none> 443/TCP 4m44s kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 19m

Обратите внимание, что по умолчанию имя службы выпуска представляет собой комбинацию имени выпуска Helm и названия чарта.

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

Шаг 3 — Обновление выпуска

Команду helm upgrade можно использовать для обновления выпуска с использованием нового или обновленного чарта или для обновления параметров (переменных) конфигурации.

Мы внесем простое изменение в выпуск dashboard-demo, чтобы продемонстрировать процесс обновления и отката. Измените имя службы dashboard на kubernetes-dashboard вместо dashboard-demo-kubernetes-dashboard.

Чарт kubernetes-dashboard предоставляет возможность настройки fullnameOverride для контроля имени службы. Чтобы переименовать выпуск, выполните команду helm upgrade со следующими параметрами:

  • helm upgrade dashboard-demo stable/kubernetes-dashboard --set fullnameOverride="kubernetes-dashboard" --reuse-values

Благодаря аргументу --reuse-values ранее заданные переменные чарта не сбрасываются в процессе обновления.

Вы увидите вывод, аналогичный выводу на шаге первоначальной команды helm install.

Проверьте, отражают ли ваши службы Kubernetes обновленные значения:

  • kubectl get services

Результат будет выглядеть следующим образом:

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.245.0.1 <none> 443/TCP 38m kubernetes-dashboard ClusterIP 10.245.49.157 <none> 443/TCP 8s

Обратите внимание, что имя службы было обновлено и получило новое значение.

Примечание. На данный момент вы можете загрузить приложение Kubernetes Dashboard в браузере и проверить его работоспособность. Для этого нужно запустить следующую команду:

  • kubectl proxy

Команда создает прокси, который позволяет вам получить доступ к удаленным ресурсам кластера с локального компьютера. В результате выполнения вышеперечисленных команд служба dashboard теперь имеет имя kubernetes-dashboard и работает в пространстве имен default. Теперь вы можете получить доступ к панели управления по следующему URL-адресу:

http://localhost:8001/api/v1/namespaces/default/services/https:kubernetes-dashboard:https/proxy/

Инструкции по использованию панели управления выходят за пределы темы данного руководства, но вы можете ознакомиться с официальной документацией по Kubernetes Dashboard для получения дополнительной информации.

Теперь посмотрим на возможности отката и удаления выпусков в Helm.

Шаг 4 — Откат и удаление выпуска

При обновлении выпуска dashboard-demo на предыдущем шаге мы создали вторую редакцию выпуска. Helm сохраняет все данные предыдущих выпусков на случай, если вам нужно будет вернуться к предыдущей конфигурации или чарту.

Используйте команду helm list для просмотра выпуска:

  • helm list

Вывод должен выглядеть так:

Output
NAME REVISION UPDATED STATUS CHART NAMESPACE dashboard-demo 2 Wed Aug 8 20:13:15 2018 DEPLOYED kubernetes-dashboard-0.7.1 default

В столбце REVISION теперь говорится, что это вторая редакция.

Используйте команду helm rollback для возврата к первой редакции:

  • helm rollback dashboard-demo 1

Вы должны получить следующий вывод, показывающий, что откат изменений выполнен успешно:

Output
Rollback was a success! Happy Helming!

В данный момент, если вы запустите kubectl get services еще раз, вы заметите, что имя службы изменилось и вернулось к предыдущему значению. Helm выполнил повторное развертывание приложения с конфигурацией 1-й редакции.

Выпуски Helm можно удалять с помощью команды helm delete:

  • helm delete dashboard-demo

Результат будет выглядеть следующим образом:

Output
release "dashboard-demo" uninstalled

Вы можете попробовать вывести выпуски Helm в виде списка:

  • helm list

Вы увидите, что их нет:

Output
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION

Теперь выпуск был действительно удален и вы можете использовать освободившееся имя выпуска.

Заключение

В этом обучающем руководстве мы установили инструмент командной строки helm и изучили возможность установки, обновления, отката и удаления чартов и выпусков Helm посредством управления чартом kubernetes-dashboard.

Дополнительную информацию о Helm и чартах Helm см. в официальной документации по Helm.

0 Comments

Creative Commons License