Как установить чарты в кластер Kubernetes с помощью Helm 3
Development | Комментировать запись
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: Helm, Helm 3, Kubernetes