Как установить чарты в кластер Kubernetes с помощью Helm 3

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

Данный мануал научит вас устанавливать Helm 3 и использовать его для установки, перенастройки, отката и удаления приложений в кластере Kubernetes (здесь в качестве примера мы будем использовать приложение Kubernetes Dashboard – официальный веб-интерфейс Kubernetes).

Читайте также: Основы работы с Helm, пакетным менеджером Kubernetes

Требования

  • Кластер Kubernetes с поддержкой управления доступом на основе ролей (RBAC). Версия Helm 3.1 поддерживает кластеры от версий 1.14 до 1.17. За дополнительной информацией можно обратиться к этой странице.
  • На локальном компьютере: утилита командной строки kubectl с возможностью подключения к кластеру. Подробнее об установке kubectl можно узнать в официальной документации.

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

kubectl cluster-info

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

kubectl config get-contexts

CURRENT   NAME                    CLUSTER                 AUTHINFO                      NAMESPACE

*         helm3-example   fra1-helm3-example   helm3-example-admin

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

kubectl config use-context context-name

Когда вы убедитесь, что подключились к правильному кластеру, приступайте к установке 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, чтобы продолжить.

Результат будет выглядеть так:

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

Вы получите такой результат:

"stable" has been added to your repositories

Затем с помощью helm установите пакет kubernetes-dashboard из только что добавленного репозитория:

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

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

Результат будет выглядеть так:

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

Вы получите такой вывод:

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

Результат команды будет выглядеть так:

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. Чтобы продемонстрировать процесс обновления и отката релизов и конфигураций, мы изменим имя сервиса на 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.

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

kubectl get services

Результат должен выглядеть так:

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

Эта команда создает прокси, который позволяет вам получать доступ к ресурсам удаленного кластера с локального компьютера. Согласно предыдущим инструкциям сервис этого приложения называется 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

Вы увидите следующий вывод:

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

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

Rollback was a success! Happy Helming!

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

Релизы Helm можно удалять с помощью команды helm delete. Например:

helm delete dashboard-demo

Вы получите такой результат:

release "dashboard-demo" uninstalled

Попробуйте запросить список релизов Helm:

helm list

Вы увидите, что в кластере их нет:

NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION

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

Заключение

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

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

Tags: , ,

Добавить комментарий