Helm#

Helm - менеджер пакетов DropApp, который помогает управлять приложениями посредством Helm-чартов для определения, установки и обновления приложений в кластере.

Примечание

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

Список основных команд Helm представлен в таблице ниже.

Таблица. Список основных команд Helm

Команда

Описание

install

Установить release

status

Проверьте состояние release

show

Вывести параметры для настройки release

expand

Расширить поставляемую конфигурацию

deploy

Произвести развертывание Helm-чарта или указанной конфигурации

list

Перечислить развертывания в кластере

get

Загрузить информацию об указанном развертывании

manifest

Вывести список манифестов или извлечь предоставленный манифест в виде deployment[/manifest]

delete

Удалить информацию об указанном развертывании

update

Обновить развертывание с использованием предоставленных конфигураций

deployed-types

Вывести список типов развертывания в кластере

deployed-instances

Отобразить список экземпляров указанного типа развертывания в кластере

createregistry

Создать каталог (реестр), содержащий Helm-чарты

registries

Отобразить список доступных каталогов, содержащих Helm-чарты

templates

Вывести список Helm-чартов в заданном каталоге (использовать с опцией --registry)

description

Описать Helm-чарт в заданном каталоге

getcredential

Получить учетные данные, используемые каталогом Helm-чартов

setcredential

Установить учетные данные, используемые каталогом Helm-чартов

Список основных флагов Helm представлен в таблице ниже.

Таблица. Список флагов Helm

Флаг

Описание

-apitoken string

Ввести токен API Github, который переопределяет переменную среды GITHUB_API_TOKEN

-binary string

Указать путь к двоичному файлу расширения шаблона. По умолчанию - ../expandybird/expansion/expansion.py

-httptest.serve string

Поверить обслуживание адресаhttptest.NewServer или заблокировать его, если поле не является пустым

-name string

Указать имя развертывания, используемое для команд развертывания и обновления. По умолчанию совпадает с именем шаблона

-password string

Ввести пароль Github, который переопределяет переменную среды GITHUB_PASSWORD

-properties string

Задать свойства, используемые при развертывании шаблона (например, --properties k1=v1,k2=v2)

-regex string

Указать регулярное выражение для фильтрации шаблонов, перечисленных в реестре шаблонов

-registry string

Изменить имя реестра. По умолчанию - application-dm-templates

-registryfile string

Отобразить файл, содержащий спецификацию реестра

-service string

Задать URL-адрес для диспетчера развертывания. По умолчанию - http://localhost:8001/api/v1/proxy/namespaces/dm/services/manager-service:manager

-serviceaccount string

Вывести файл учетной записи службы, содержащий токен JWT

-stdin

Настроить конфигурацию из стандартного ввода

-timeout int

Указать время ожидания ответа в секундах. Значение по умолчанию - 20

-username string

Задать имя пользователя Github, которое переопределяет переменную среды GITHUB_USERNAME

Сценарий установки Helm#

Для установки Helm выполните следующий сценарий:

  1. Введите команду docker run:

    docker run -it --rm /dapp-helm-2/helm:3.15.4
    
  2. Проверьте процесс установки:

    docker inspect
    

Сценарий проверки версии Helm#

Для проверки установленной версии Helm выполните следующую команду:

docker run -it --rm /dapp-helm-2/helm:3.15.4 version

Сценарии администрирования с помощью Helm#

Развертывание приложения#

Чтобы установить приложение happy-panda, выполните следующие действия:

  1. Введите команду helm install:

    $ helm install happy-panda bitnami/wordpress
    NAME: happy-panda
    LAST DEPLOYED: Tue Jan 26 10:27:17 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
    
  2. Используйте команду для отслеживания статуса установки:

    kubectl get svc --namespace default -w happy-panda-wordpress
    export SERVICE_IP=$(kubectl get svc --namespace default happy-panda-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
    echo "WordPress URL: http://$SERVICE_IP/"
    echo "WordPress Admin URL: http://$SERVICE_IP/admin"
    
  3. Откройте браузер и войдите в Wordpress, используя полученный URL-адрес.

  4. Введите следующие учетные данные:

    echo Username: user
      echo Password: $(kubectl get secret --namespace default happy-panda-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)
    

    Wordpress-чарт установлен. При установке создается новый объект release. В приведенном примере release отображается под именем happy-panda.

  5. Проверьте состояние release при помощи команды helm status:

    $ helm status happy-panda
    NAME: happy-panda
    LAST DEPLOYED: Tue Jan 26 10:27:17 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
    
  6. Выведите параметры для настройки, используя команду:

    $ helm show values bitnami/wordpress
    
  7. Переопределите параметры в YAML-файле и передайте этот файл во время установки:

    $ echo '{mariadb.auth.database: user0db, mariadb.auth.username: user0}' > values.yaml
    $ helm install -f values.yaml bitnami/wordpress --generate-name
    

    Приведенные команды создают пользователя MariaDB по умолчанию с именем user0 и предоставляет этому пользователю доступ к вновь созданной базе данных user0db. Все остальные настройки принимают значения по умолчанию.

Обновление приложения#

Чтобы обновить приложение happy-panda, выполните следующий сценарий:

  1. Используйте команду helm upgrade для обновления:

    $ helm upgrade -f panda.yaml happy-panda bitnami/wordpress
    
  2. Убедитесь в успешном обновлении:

    $ helm get values happy-panda
    mariadb:
      auth:
        username: user1
    

Откат приложения#

Чтобы откатить приложение happy-panda до предыдущей версии, введите команду helm rollback:

$ helm rollback happy-panda 1

Команда выполняет откат приложения happy-panda до первой версии.

Удаление приложения#

Чтобы удалить приложение happy-panda, выполните следующие шаги:

  1. Введите команду helm uninstall:

    $ helm uninstall happy-panda
    

    Команда удалит release приложения happy-panda из кластера.

  2. Проверьте список всех развернутых release:

    $ helm list
    NAME            VERSION UPDATED                         STATUS          CHART
    inky-cat        1       Wed Sep 28 12:59:46 2016        DEPLOYED        alpine-0.1.0
    

    В приведенном примере happy-panda был успешно удален.

Helm-operator#

Helm-operator - оператор DropApp, который позволяет декларативно управлять выпусками Helm-чартов.

Функции, поддерживаемые Helm-operator:

  • декларативная установка, обновление и удаление выпусков Helm;

  • извлечение Helm-чартов из любого источника;

  • поддержка публичных или частных репозиториев Helm по протоколу HTTP/S;

  • поддержка публичных или частных репозиториев Git по протоколу HTTPS или SSH;

  • встроенный в ресурс HelmRelease;

  • автоматическая очистка при сбоях установки релиза;

  • автоматический необязательный откат при сбоях обновления;

  • автоматизированное (опционально) управление тестированием установок и обновлений;

  • автоматическое (опционально) обновление зависимостей для Helm-чартов из исходных текстов Git при установке или обновлении;

  • параллельная и масштабируемая обработка различных ресурсов HelmRelease с использованием рабочих nodes.

Установка Helm-operator#

Для установки Helm-operator выполните следующие действия:

  1. Примените конфигурационный файл helm-operator.yaml:

    kubectl apply -f <путь до конфига>/helm-operator.yaml
    

    Где, <registry> - фактическое расположение helm-operator.yaml.

  2. Добавьте Helm-чарт Helm-operator в Helm:

    helm repo add <chart-registry>
    

    Где, <chart-registry> - путь до реестра Helm-чартов.

  3. Установите Helm-operator в namespace <namespace>:

    helm install --wait --name helm-operator --namespace <namespace>
    

    Где, <namespace> - имя namespace для Helm-operator.