SynapseClusterLoadChange#

Pipeline для включения/выключения подачи нагрузки на проект системы оркестрации приложений.

Для использования данного pipeline необходимо, чтобы в проекте использовался соответствующие шлюзы и healthcheck для HTTP трафика, которые позволяют отключать проект.

Есть несколько режимов работы:

traffic_work_mode

Рисунок. Режимы работы

  1. all traffic - производится включение/выключение всего трафика в проекте. C помощью параметров needChangeMQ, needChangeHTTP, needChangeKafka можно выбрать какой трафик нужно изменить.

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

    2. Включение/выключение MQ трафика происходит с помощью флага readEnabled. Подробнее о данном флаге можно прочитать в документации по компоненте ASGT.

  2. specific queue traffic - производится отключение конкретных менеджеров в шлюзах. В параметре trafficMode можно выбрать, отключать очередь в одном шлюзе или во всех шлюзах проекта. Изменение происходит с помощью параметра disabledManagers. Подробнее о данном флаге можно прочитать в документации по компоненте ASGT.

Подробнее про режимы работы можно прочитать в подразделе «Режимы работы SynapseClusterLoadChange» раздела «Полезные материалы» текущего документа.

Jenkins Job использует:

  • tool python для запуска Python скриптов;

  • tool executor для работы с системой оркестрации приложений;

  • tool processor для работы с системой оркестрации приложений;

  • tool yq для чтения YAML конфигураций.

Для настройки Jenkins Tool необходимо ознакомиться с разделом «Взаимодействие с Jenkins Tools» документа «Руководство по системному администрированию».


Параметры запуска Jenkins Job:

Параметр

Обязательность

Возможность изменить предопределенные значения

Описание

ClusterName

+

+

Кластер для установки

orchestratorProject

-

+

Имя проекта системы оркестрации приложений. Пример: ci00000001-cluster-synapse-dev

orchestratorProjectArray

-

+

Проекты по умолчанию. Если orchestratorProject пуст, выбираете из предложенных
Пример: synapse-ift

workMode

+

+

Режим работы Jenkins Job: 1. all traffic - Отключение всего трафика в проекте 2. specific queue traffic - Отключение конкретных очередей

loadTurnOn

-

+

Если параметр задан false, то нагрузка будет снята (полностью или частично в зависимости от параметра workMode) и Jenkins Job будет ожидать подтверждения возвращения нагрузки. Если параметр задан true, то подача нагрузки включится.

trafficMode

+

+

Выключать вычитку из очередей на одном шлюзе или во всем проекте (используется при workMode == specific queue traffic )

needChangeMQ

-

+

Нужно ли отключать/включать весь трафик из очередей в проекте (используется при workMode == all traffic )

needChangeKafka

-

+

Нужно ли отключать/включать весь Kafka трафик в проекте (используется при workMode == all traffic )

needChangeHTTP

-

+

Нужно ли отключать/включать весь HTTP трафик в проекте (используется при workMode == all traffic )

needCheckForListenersStop

-

+

Нужно ли проверять статус слушателей после включения/выключения трафика на шлюзах из очередей

ClustersXml

-

-

Структура хранения информация о принадлежности проектов к кластерам

projectApiURL

+

-

Ссылка на кластер системы оркестрации приложений. Пример: https://api.cluster_name.ru:6443. Заполняется на основе ClusterName

additionalParams

-

+

Параметр с необязательными флагами

Источники параметров:

projectConfig - конфигурация проекта. Параметры, которые считываются из репозитория конфигурации SMDL.

jenkinsParams - параметры, которые передаются в pipeline, путем заполнения их на экране запуска Jenkins Job, после нажатия кнопки "Собрать с параметрами". Их описание можете посмотреть выше.

libraryParams - параметры, которые заданы командой разработки SMDL.

Параметры Pipeline:

Параметр

Принцип валидации

Значение по умолчанию

Источник

Описание

priorityUploadConfigs

requiredNotEmpty

libraryParams

Порядок загрузки конфигураций в проект

whiteListMetaInfo

requiredNotEmpty

['labels', 'name', 'annotations']

libraryParams

Список разрешенных полей в метаинформации

blackListMetaInfo

requiredNotEmpty

['clusterIP', 'externalIPs', 'nodePort', 'kubectl.kubernetes.io/last-applied-configuration']

libraryParams

Список запрещенных полей в метаинформации

removeIfNullMetaInfo

requiredNotEmpty

['tcp','tls']

libraryParams

Список полей в метаинформации, которые надо удалить, если их значение null

needInputOrchestratorLogin

requiredLimitedValues

true/false

libraryParams

Флаг, отвечающий за авторизацию по логину/паролю (вводится во время работы pipeline динамически, маскируется)

additionalConfirmation

optionalParam

libraryParams

Map c дополнительными сообщениями, которые нужно добавить к подтверждающему input

Минимально необходимые права для работы pipeline в системе оркестрации приложений:

rules:
   # login
   - verbs:
        - get
     apiGroups:
        - ''
        - project.openshift.io
     resources:
        - namespaces
        - projects
   # get тип_ресурсов
   - verbs:
        - get
        - list
     apiGroups:
        - ''
        - apps
     resources:
        - configmaps
        - pods
        - deployments
   # apply тип_ресурсов
   - verbs:
        - patch
     apiGroups:
        - ''
     resources:
        - configmaps
   # oc scale deploy
   - verbs:
        - get
        - update
        - patch
     apiGroups:
        - apps
     resources:
        - deployments/scale
   # oc log имя pod(s)
   - verbs:
        - get
     apiGroups:
        - ''
     resources:
        - pods/log

Используемые шаги:

Все указанные ниже исполняемые скрипты в формате .groovy расположены в подразделе «Шаги» раздела «Дополнительная документация» документа «Руководство прикладного разработчика».

Название stage

Описание

Загрузка инструментов для выполнения pipeline

CommonStep.groovy

Валидация параметров

Validation.groovy
ParseHTMLParams.groovy

Изменение нагрузки

ClusterLoadChange.groovy