Конфигурации инструментов дополнительных компонентов#

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

Примечание

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

Описание#

Основной единицей установки различных элементов в кластер DropApp является Tool (инструмент).

Инструмент - это пользовательский ресурс (CRD) (Custom Resource Definition), которым управляет контроллер в Dapp-operator. Инструменты DropApp представляют собой оболочку helm release конкретного Helm-чарта. Сам helm-репозиторий встроен в Dapp-operator и содержит в себе все чарты релизов DropApp начиная с версии 2.1.0. Это позволяет устанавливать, удалять, обновлять helm release в том кластере, которым управляет Dapp-operator.

Инструменты могут устанавливаться как отдельно через kind: Tool, так и в составе компонента (CRD, со своим контроллером в составе Dapp-operator). У компонента есть инструменты по умолчанию и приоритет установки и удаления. В составе компонентов содержится один или более инструментов, которые заранее настроены для интеграции друг с другом.

Конфигурация по умолчанию и управление значениями#

У всех инструментов есть значения (values) по умолчанию, которых в большинстве случаев достаточно для демонстрационных целей.

Все values работают с образами из imageRegistry, который сконфигурирован при установке кластера в DropAppConfiguration.

Все объекты ingress в values сконфигурированы на publicDomain из конфигурации кластера. Это означает, что пользователю не требуется тратить время на установку конкретного Helm-чарта для получения необходимого образа, хоста для ingress или конфигурации OIDC, так как все эти параметры уже преднастроены.

Некоторые значения можно изменять, переопределять, отключать или активировать определенные параметры инструментов. Для этого в поле spec каждого инструмента предусмотрено указание в values тех параметров, которые требуется настроить.

Поскольку Tool представляет собой оболочку для helm release конкретного Helm-чарта, все схемы values соответствуют схемам официальных Helm-чартов, используемых инструментов.

Конфигурация values#

values для инструментов можно настроить при установке и при обновлении инструмента.

При установке в составе компонента#

Пример на основе компонента Monitoring.

При установке компонента Monitoring с целью активации ingress для vmagent из инструмента Victoria-metrics-k8s-stack (по умолчанию ingress отключен) можно использовать следующий манифест:

apiVersion: config.dropapp.ru/v1alpha1
kind: Component
metadata:
  name: monitoring
spec:
  tools:
  - name: victoria-metrics-k8s-stack
    values:
      vmagent:
        ingress:
          enabled: true

В результате будут установлены все инструменты с настройками по умолчанию, и ingress для vmagent из инструмента Victoria-metrics-k8s-stack будет активирован.

При установке Tool#

Возможна установка отдельного инструмента без привязки к какому-либо компоненту. В этом случае конфигурация values указывается в Tool.spec.values:

apiVersion: config.dropapp.ru/v1alpha1
kind: Tool
metadata:
  name: victoria-metrics-k8s-stack
spec:
  values:
    vmagent:
      ingress:
        enabled: true

При обновлении Tool#

В случае необходимости обновления параметров values уже установленного инструмента, корректировку можно выполнить путем редактирования ресурса инструмента с указанным именем. Например, отключение ingress для vmagent, который был активирован в примере ранее.

Используя kubectl#

Чтобы изменить параметры установленного инструмента, используя kubectl, выполните следующие шаги:

  1. С помощью kubectl откройте конфигурацию:

    kubectl edit tool victoria-metrics-k8s-stack
    
  2. Отредактируйте значения в конфигурации:

    apiVersion: config.dropapp.ru/v1alpha1
    kind: Tool
    metadata:
      name: victoria-metrics-k8s-stack
    ...
    spec:
      values:
        vmagent:
          ingress:
            enabled: false
    ...
    

Используя Console#

Для обновления инструмента с помощью Console выполните шаги:

  1. Перейдите в консоль на страницу https://<console-address>/api-resource/cluster/config.dropapp.ru~v1alpha1~Tool/instances, где <console-address> - адрес консоли из примера https://console.da-cluster.domain.ru.

  2. Также инструменты можно найти вручную:

    • на вкладке Home - API Explorer в выпадающем меню групп найдите группу config.dropapp.ru:

      console-update-tool-1

    • в открывшемся окне группы конфигураций выберите ресурс Tool:

      console-update-tool-2

    • при необходимости прокрутите ленту вниз для поиска нужного инструмента:

      console-update-tool-3

      console-update-tool-4

  3. Выберите нужный инструмент, в открывшемся окне, на вкладке YAML, внесите нужные изменения.

    console-update-tool-1

Важно

Конфигурации объектов инструментов (deployments, pods, services и др.) можно изменять как напрямую, так и через команду Helm. Такой подход не рекомендуется, поскольку состояние инструмента, самого helm release и его объектов не будет синхронизировано, что может привести к откату изменений. Поэтому все изменения следует вносить через spec.values самого инструмента.

После сохранения values статус инструмента сменится на upgrading и далее перейдет в статус success или failed. Причину failed можно узнать по событиям (Events) самого инструмента:

kubectl describe tool victoria-metrics-k8s-stack

Общие values для всех инструментов#

Для каждого Helm-чарта есть общие values, они находятся в секции global:

global:
  # -- DropApp globals
  image:
    registry: ~
    repository: ~
  dappVersion: 4.0.0
  publicDomain: ~

Где:

  • global.image - секция описывает реестр для образов, используется для построения путей к образам контейнеров;

  • global.dappVersion - версия DropApp, также используется в построения путей к образам контейнеров;

  • global.publicDomain - публичный домен, который используется в конфигурации ingress, а также для построения URL для переменных окружения.

Важно

Не переопределяйте эти параметры! Они управляются самим Platform V DropApp.

Механика хранения values для Tool#

Tool.spec.values не хранятся в явном виде, поскольку это небезопасно из-за возможности хранения чувствительных данных. Все значения из spec.values инструмента сохраняются в соответствующем секрете в namespace dapp-system после изменений. Имена секретов имеют формат toolname-values, например cilium-values, victoria-metrics-k8s-stack-values и т.п. После сохранения values в секрет они передаются в Helm, который выполняет изменения конфигурации Helm-чарта и создает новый helm release, увеличивая ревизию релиза. Из конфигурации объекта Tool значения удаляются.

Механика обновления helm release для Tool#

После обновления spec.values происходит слияние новых значений с текущими values в секрете для инструмента, после чего данные отправляются в Helm. Если фактическая схема values не изменилась, ревизия helm release для чарта инструмента остается неизменной, и объекты не пересоздадутся. В случае изменений Helm обновляет helm release для инструмента и увеличивает ревизию этого релиза (например, с 1 до 2). Контроллер инструмента обрабатывает различные непредвиденные ошибки и выполняет три попытки обновления инструмента. Если все три попытки неуспешны, статус инструмента становится failed; если обновление прошло успешно, статус изменяется на success.