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
OutputCURRENT 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.
Сначала мы установим утилиту командной строки 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
, чтобы продолжить.
Итоговый результат будет выглядеть следующим образом:
OutputDownloading 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 и готовы использовать его для установки первого чарта.
Пакеты программного обеспечения 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 доступ ко всему кластеру целиком.
Вывод будет выглядеть следующим образом:
OutputNAME: 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
Результат будет выглядеть примерно следующим образом:
OutputNAME 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
Итоговый результат будет выглядеть следующим образом:
OutputNAME 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 для изменения его конфигурации и обновления развертывания.
Команду 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
Результат будет выглядеть следующим образом:
OutputNAME 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.
При обновлении выпуска dashboard-demo
на предыдущем шаге мы создали вторую редакцию выпуска. Helm сохраняет все данные предыдущих выпусков на случай, если вам нужно будет вернуться к предыдущей конфигурации или чарту.
Используйте команду helm list
для просмотра выпуска:
- helm list
Вывод должен выглядеть так:
OutputNAME 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
Вы должны получить следующий вывод, показывающий, что откат изменений выполнен успешно:
OutputRollback was a success! Happy Helming!
В данный момент, если вы запустите kubectl get services
еще раз, вы заметите, что имя службы изменилось и вернулось к предыдущему значению. Helm выполнил повторное развертывание приложения с конфигурацией 1-й редакции.
Выпуски Helm можно удалять с помощью команды helm delete
:
- helm delete dashboard-demo
Результат будет выглядеть следующим образом:
Outputrelease "dashboard-demo" uninstalled
Вы можете попробовать вывести выпуски Helm в виде списка:
- helm list
Вы увидите, что их нет:
OutputNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
Теперь выпуск был действительно удален и вы можете использовать освободившееся имя выпуска.
В этом обучающем руководстве мы установили инструмент командной строки helm
и изучили возможность установки, обновления, отката и удаления чартов и выпусков Helm посредством управления чартом kubernetes-dashboard
.
Дополнительную информацию о Helm и чартах Helm см. в официальной документации по Helm.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.