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

--take-ownership

Установить параметр «получения прав собственности» при установке и обновлении через CLI

--skip-schema-validation

Игнорировать любых схем в Helm

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

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

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

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

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

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

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

    $ helm install <application_name> <chart_name>
    NAME: <application_name>
    LAST DEPLOYED: Tue Jan 26 10:27:17 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
    

    Где:

    • <application_name> - наименование приложения;

    • <chart_name> — имя чарта или путь к локальному чарту.

  2. Используйте команду для отслеживания статуса установки:

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

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

    echo Username: user
      echo Password: $(kubectl get secret --namespace default <application_name>-<chart_name> -o jsonpath="{.data.<chart_name>-password}" | base64 --decode)
    

    <chart_name> установлен. При установке создается новый объект release. В приведенном примере release отображается под именем <application_name>.

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

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

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

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

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

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

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

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

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

    $ helm get values <application_name>
    mariadb:
      auth:
        username: user1
    

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

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

$ helm rollback <application_name> 1

Команда выполняет откат приложения <application_name> до первой версии.

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

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

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

    $ helm uninstall <application_name>
    

    Команда удалит release приложения <application_name> из кластера.

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

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

    В приведенном примере <application_name> был успешно удален.

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 <config-path>/helm-operator.yaml
    

    Где:

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

    • <config-path> - путь до конфигурационного файла.

  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.