Введение
Helm — это диспетчер пакетов для Kubernetes, который облегчает для разработчиков и операторов настройку и развертывание приложений в кластерах Kubernetes.
В этом обучающем руководстве мы настроим Helm 3 и научимся использовать его для установки, изменения конфигурации, отката изменений и последующего удаления экземпляра приложения Kubernetes Dashboard. Dashboard — это официальный графический пользовательский веб-интерфейс Kubernetes.
С общим описанием Helm и его экосистемы пакетов можно ознакомиться в статье Знакомство с Helm.
Предварительные требования
В ходе данного обучающего руководства вам потребуется следующее:
- Кластер Kubernetes с включенным контролем доступа на основе ролей (RBAC). Helm 3.1 поддерживает кластеры версий с 1.14 по 1.17. Дополнительную информацию можно найти на странице выпусков Helm.
- Инструмент командной строки
kubectl
, установленный на локальном компьютере и настроенный для подключения к вашему кластеру. Дополнительную информацию об установкеkubectl
можно найти в официальной документации.
Вы можете протестировать подключение с помощью следующей команды:
Отсутствие ошибок означает, что вы успешно подключились к кластеру. Если у вас есть доступ к нескольким кластерам с 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
:
Вы можете воспользоваться текстовым редактором, чтобы открыть скрипт и изучить его, чтобы убедиться в его безопасности. Когда вы будете удовлетворены, запустите его:
Возможно, вам придется ввести пароль. Введите его и нажмите 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 — это отдельное развертывание одного чарта с конкретной конфигурацией. Вы можете развернуть несколько выпусков одного чарта, используя отдельные конфигурации для каждого выпуска.
Вы можете вывести список всех выпусков в кластере:
Результат будет выглядеть примерно следующим образом:
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
, чтобы подтвердить развертывание в кластере новой службы:
Итоговый результат будет выглядеть следующим образом:
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 обновленные значения:
Результат будет выглядеть следующим образом:
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 в браузере и проверить его работоспособность. Для этого нужно запустить следующую команду:
Команда создает прокси, который позволяет вам получить доступ к удаленным ресурсам кластера с локального компьютера. В результате выполнения вышеперечисленных команд служба 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
для просмотра выпуска:
Вывод должен выглядеть так:
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 в виде списка:
Вы увидите, что их нет:
Output
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
Теперь выпуск был действительно удален и вы можете использовать освободившееся имя выпуска.
Заключение
В этом обучающем руководстве мы установили инструмент командной строки helm
и изучили возможность установки, обновления, отката и удаления чартов и выпусков Helm посредством управления чартом kubernetes-dashboard
.
Дополнительную информацию о Helm и чартах Helm см. в официальной документации по Helm.