SynapseClusterLoadChange#
Pipeline для включения/выключения подачи нагрузки на проект системы оркестрации приложений.
Для использования данного pipeline необходимо, чтобы в проекте использовался соответствующие шлюзы и healthcheck для HTTP трафика, которые позволяют отключать проект.
Есть несколько режимов работы:

Рисунок. Режимы работы
all traffic - производится включение/выключение всего трафика в проекте. C помощью параметров needChangeMQ, needChangeHTTP, needChangeKafka можно выбрать какой трафик нужно изменить.
Для отключения HTTP трафика необходимо настроить геобалансировщик, инструкцию по настройке которого можно получить у администраторов системы оркестрации приложений.
Включение/выключение MQ трафика происходит с помощью флага readEnabled. Подробнее о данном флаге можно прочитать в документации по компоненте ASGT.
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 пуст, выбираете из предложенных |
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 |
Список полей в метаинформации, которые надо удалить, если их значение |
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 |
|
Валидация параметров |
|
Изменение нагрузки |