One place for hosting & domains

      пакетов

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


      Введение

      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.



      Source link

      Введение в диспетчер пакетов Helm для Kubernetes


      Введение

      Развертывание приложений в мощной и популярной системе организации контейнеров Kubernetes может представлять собой сложную задачу. Для настройки одного приложения может потребоваться создание нескольких независимых ресурсов Kubernetes, в том числе подов, служб, развертываний и наборов копий, и для каждого из этих ресурсов требуется детализированный файл манифеста YAML.

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

      Helm уже является официальным проектом Kubernetes и поддерживается некоммерческим фондом Cloud Native Computing Foundation, который поддерживает проекты с открытым исходным кодом, связанные с экосистемой Kubernetes.

      В этой статье мы приведем обзор Helm и различных абстракций, которые он использует для развертывания приложений в Kubernetes. Если вы еще мало знакомы Kubernetes, прочитайте статью «Введение в Kubernetes», чтобы ознакомиться с базовыми концепциями.

      Обзор Helm

      Практически у каждого языка программирования и каждой операционной системы имеется собственный диспетчер пакетов, служащий для установки и обслуживания программного обеспечения. Helm имеет те же базовые функции, что и другие знакомые вам диспетчеры пакетов, такие как apt в Debian или pip в Python.

      Helm может выполнять следующие задачи:

      • Установка программного обеспечения.
      • Автоматическая установка зависимостей программного обеспечения.
      • Обновление программного обеспечения.
      • Настройка развертывания программного обеспечения.
      • Доставка пакетов программного обеспечения из репозиториев.

      Helm реализует эти возможности с помощью следующих компонентов:

      • Инструмент командной строки helm, обеспечивающий пользовательский интерфейс для всех функций Helm.
      • Сопутствующий серверный компонент tiller, который работает на кластере Kubernetes, прослушивает команды helm и обрабатывает конфигурации и развертывание версий программного обеспечения в кластере.
      • Формат пакетов Helm, называемый charts.
      • Официальный курируемый репозиторий charts с готовыми пакетами charts для популярных проектов программного обеспечения с открытым исходным кодом.

      Далее мы более подробно расскажем о формате charts.

      Формат Charts

      Пакеты Helm имеют формат charts и состоят из нескольких файлов конфигурации YAML и шаблонов, преобразуемых в файлы манифеста Kubernetes. Базовая структура каталогов пакета charts выглядит следующим образом:

      Example chart directory

      package-name/
        charts/
        templates/
        Chart.yaml
        LICENSE
        README.md
        requirements.yaml
        values.yaml
      

      Эти каталоги и файлы имеют следующие функции:

      • charts/: в этот каталог можно помещать управляемые вручную зависимости пакета, хотя обычно лучше использовать файл requirements.yaml для динамической привязки зависимостей.
      • templates/: этот каталог содержит файлы шаблона, которые комбинируются со значениями конфигурации (из файла values.yaml и командной строки) и записываются в манифесты Kubernetes. Для шаблонов используется формат шаблонов языка программирования Go.
      • Chart.yaml: файл YAML с метаданными о пакете, включая название и версию пакета, информацию об обслуживании, актуальный сайт и ключевые слова для поиска.
      • LICENSE: лицензия пакета в текстовом формате.
      • README.md: файл readme с информацией для пользователей пакета.
      • requirements.yaml: файл YAML с перечислением зависимостей пакета.
      • values.yaml: файл YAML со значениями конфигурации пакета по умолчанию.

      Команда helm может использоваться для установки пакета из локального каталога или из упакованной версии .tar.gz этой структуры каталогов. Упакованные пакеты также можно автоматически загружать и устанавливать из репозиториев пакетов или repos.

      Далее мы рассмотрим репозитории пакетов.

      Репозитории пакетов

      Репозиторий пакетов Helm — это простой сайт HTTP, обслуживающий упакованные пакеты в файлах index.yaml и .tar.gz. Команда helm имеет две субкоманды для упаковки пакетов и создания требуемого файла index.yaml. Эти файлы может обслуживать любой веб-сервер, служба хранения объектов или хост статических сайтов, например GitHub Pages.

      В Helm настроен репозиторий пакетов по умолчанию с именем stable. Этот репозиторий указывает на объект Google Storage по адресу https://kubernetes-charts.storage.googleapis.com. Источник репозитория stable можно найти в репозитории Git helm/charts на GitHub.

      Альтернативные репозитории можно добавлять с помощью команды helm repo add. Ниже представлены некоторые популярные альтернативные репозитории:

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

      Конфигурация пакетов

      Значения конфигурации пакета по умолчанию обычно содержатся в файле values.yaml этого пакета. Некоторые приложения можно полностью развернуть со значениями по умолчанию, однако в большинстве случаев требуется изменить некоторые элементы конфигурации.

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

      Далее приведен сниппет с примерами значений:

      values.yaml

      service:
        type: ClusterIP
        port: 3306
      

      Это варианты настройки ресурса службы Kubernetes. Вы можете использовать команду helm inspect values chart-name для очистки всех доступных значений конфигурации пакета.

      Эти значения можно переопределить в собственном файле YAML, используемом при запуске команды helm install, или через отдельные параметры командной строки с флагом --set. Нужно указать только те значения, для которых вы хотите изменить параметры по умолчанию.

      Пакет Helm, развернутый в определенной конфигурации, назыается релизом. Далее мы поговорим о релизах.

      Релизы

      Во время установки пакета Helm объединяет шаблоны пакета с заданной пользователем конфигурацией и значеними по умолчанию из файла value.yaml. Для этих пакетов выполняется рендеринг в манифестах Kubernetes, которые затем развертываются в Kubernetes API. При этом создается релиз, то есть конкретная конфигурация и развертывание для конкретного пакета.

      Понимание концепции релизов очень важно, поскольку одно и то же приложение можно развернуть в кластере несколько раз. Например, вам пожет понадобиться несколько серверов MySQL с разными конфигурациями.

      Возможно вы захотите обновлять разные экземпляры пакета по отдельности. Одно приложение может быть готово работать с обновленным сервером MySQL, а другое — нет. С помощью Helm вы можете обновлять каждый релиз по отдельности.

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

      Создание пакетов

      Если вы не можете найти существующий пакет для своего программного обеспечения, вы можете создать собственный пакет. Helm может вывести схему каталога пакетов с помощью команды helm create chart-name. При этом будет создана папка с файлами и каталогами, которые мы обсуждали в разделе «Пакеты» выше.

      Теперь вы можете заполнить метаданные пакетов в файле Chart.yaml и поместить файлы манифеста Kubernetes в каталог templates. В этом случае вам нужно извлечь переменные конфигурации из манифестов в файл values.yaml, а затем включить их в шаблоны манифеста с помощью системы шаблонов.

      Команда helm имеет множество субкоманд для тестирования, упаковки и обслуживания пакетов. Дополнительную информацию можно найти в официальной документации Helm по разработке пакетов.

      Заключение

      В этой статье мы рассмотрели диспетчер пакетов Helm для Kubernetes. Мы рассмотрели архитектуру Helm и отдельные компоненты helm и tiller, рассказали о формате пакетов Helm и привели обзор репозиториев пакетов. Также мы рассмотрели процедуру настройки пакетов Helm и объединение конфигураций и пакетов и их развертывание в качестве релизов на кластерах Kubernetes. В заключение мы рассказали об основных процедурах создания пакетов в случаях, когда готовых пакетов нет.

      Дополнительную информацию о Helm можно найти в официальной документации по Helm. Официальные пакеты Helm можно найти в официальном репозитории Git helm/charts на GitHub.



      Source link

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


      Введение

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

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

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

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

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

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

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

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

      • kubectl config get-contexts

      Output

      CURRENT NAME CLUSTER AUTHINFO NAMESPACE * do-nyc1-k8s-example do-nyc1-k8s-example do-nyc1-k8s-example-admin docker-for-desktop docker-for-desktop-cluster docker-for-desktop

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

      • kubectl config use-context context-name

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

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

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

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

      • cd /tmp
      • curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > install-helm.sh

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

      • chmod u+x install-helm.sh

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

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

      Output

      helm installed into /usr/local/bin/helm Run 'helm init' to configure helm.

      Далее мы закончим процесс установки, добавив некоторые компоненты Helm в наш кластер.

      Шаг 2 — Установка Tiller

      Tiller — это спутник команды helm, который запускается на вашем кластере, получает команды от helm и связывается непосредственно с API Kubernetes для выполнения задач по созданию и удалению ресурсов. Чтобы предоставить Tiller права доступа, которые ему необходимы для запуска на кластере, мы создадим ресурс Kubernetes serviceaccount.

      Примечание: мы привяжем serviceaccount к роли кластера cluster-admin. В результате суперпользователь службы tiller получит доступ к кластеру и позволит ему устанавливать все типы ресурсов в любых пространствах имен. Это допустимо при изучении Helm, но вам может потребоваться более изолированная конфигурацию для рабочего кластера Kubernetes.

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

      Создадим serviceaccount для tiller:

      • kubectl -n kube-system create serviceaccount tiller

      Затем мы привяжем serviceaccount tiller к роли cluster-admin:

      • kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

      Теперь мы можем запустить helm init для установки Tiller в нашем кластере, а также выполнения ряда локальных задач, таких как загрузка данных репозитория stable:

      • helm init --service-account tiller

      Output

      . . . Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster. Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy. For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation Happy Helming!

      Чтобы убедиться, что Tiller запущен, запросите список подов в пространстве имен kube-system:

      • kubectl get pods --namespace kube-system

      Output

      NAME READY STATUS RESTARTS AGE . . . kube-dns-64f766c69c-rm9tz 3/3 Running 0 22m kube-proxy-worker-5884 1/1 Running 1 21m kube-proxy-worker-5885 1/1 Running 1 21m kubernetes-dashboard-7dd4fc69c8-c4gwk 1/1 Running 0 22m tiller-deploy-5c688d5f9b-lccsk 1/1 Running 0 40s

      Имя пода Tiller начинается с префикса tiller-deploy-​​​.

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

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

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

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

      • helm install stable/kubernetes-dashboard --name dashboard-demo

      Output

      NAME: dashboard-demo LAST DEPLOYED: Wed Aug 8 20:11:07 2018 NAMESPACE: default STATUS: DEPLOYED . . .

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

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

      Мы можем попросить Helm представить список релизов в этом кластере:

      Output

      NAME REVISION UPDATED STATUS CHART NAMESPACE dashboard-demo 1 Wed Aug 8 20:11:11 2018 DEPLOYED kubernetes-dashboard-0.7.1 default

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

      Output

      NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-demo-kubernetes-dashboard ClusterIP 10.32.104.73 <none> 443/TCP 51s kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 34m

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

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

      Шаг 4 — Обновление релиза

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

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

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

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

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

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

      Output

      NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 36m dashboard ClusterIP 10.32.198.148 <none> 443/TCP 40s

      Наше имя службы было обновлено и получило новое значение.

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

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

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

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

      Далее мы рассмотрим способность Helm выполнять откат релизов.

      Шаг 5 — Откат изменений в релизе

      Когда мы обновили наш релиз 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.

      Шаг 6 — Удаление релиза

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

      • helm delete dashboard-demo

      Output

      release "dashboard-demo" deleted

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

      Error: a release named dashboard-demo already exists.
      

      Если вы используете флаг --deleted для отображения списка удаленных релизов, то увидите, что релиз до сих пор на месте:

      Output

      NAME REVISION UPDATED STATUS CHART NAMESPACE dashboard-demo 3 Wed Aug 8 20:15:21 2018 DELETED kubernetes-dashboard-0.7.1 default

      Чтобы действительно удалить релиз и очистить все старые версии, используйте флаг --purge с командой helm delete:

      • helm delete dashboard-demo --purge

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

      Заключение

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

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



      Source link