CanaryProcessor.groovy#
Описание всех нижеприведенных Jenkins Jobs расположено в подразделе «Pipelines» раздела «Дополнительная документация» документа «Руководство оператора».
Jenkins библиотека канареечного развертывания компонент Synapse.#
Описание функционала:
Формирование ArrayList, где элементами является Map, содержащая в себе информацию по template в разрезе канареечного развертывания;
Определение необходимости в канареечном развертывании компоненты путем поиска Deployment в проекте системы оркестрации приложений. Поиск Deployment происходит по регулярному выражению -
${deploymentName}(\$|-${config.distribPrefix.toLowerCase()}-\\d+-\\d\\d\\d-00-\\d{2,3}-(\\d+|(\\w+-\\d+)));Если включен флаг необходимости канареечного развертывания и сегмент Dev, то, при нахождении предыдущей версии приложения, будет включено канареечное развертывание;
Если выключен флаг необходимости канареечного развертывания и сегмент не Dev, то пользователю выводится соответствующее окно, в котором запрашивается подтверждение на переход к канареечной установке вместо обычной. Пользователь может отказаться от перехода к канареечной установке и установить обычным способом.

Рисунок. Необходимость канареечного развертывания
Если передается шлюз типа "-all", то происходит поиск шлюзов, которые были объединены. В найденных конфигурационных файлах происходит генерация новой версии для канареечного развертывания;
Генерация конфигурационных файлов для канареечного развертывания для сервиса Kafka-адаптера;
Определяется, есть ли HorizontalPodAutoscaler в дистрибутиве или в проекте для корректной установки компоненты с HorizontalPodAutoscaler;
Генерируется HorizontalPodAutoscaler для канареечного развертывания, если в дистрибутиве или в проекте есть HorizontalPodAutoscaler для устанавливаемой компоненты;
Определение полного списка VirtualService, в которых будет производиться изменение весов;
Определение старой версии приложения (Версия на которую было подано 100% нагрузки перед установкой новой версии);
Определение ConfigMap для которых будет производиться изменение конфигурации вычитки из mq-очереди (для шлюзов);
Получение текущего процента нагрузки (веса) направляемого на указанную версию приложения. Если в VirtualService указана одна версия приложения или при запуске Jenkins Job была указана некорректная версия, то сформируется соответствующая ошибка (для случая когда вызывается метод в Jenkins Job ChangeCanaryWeight);
Получение текущих параметров вычитки из очереди (limitForPeriod и limitRefreshPeriod) (для шлюзов в случае когда шаг вызываться в Jenkins Job ChangeCanaryWeight);
Цикличный или разовый (в зависимости от выбранного режима работы), запрос веса (и параметров вычитки из очереди для шлюзов и параметра tpsPerMinute для Kafka-адаптера), который необходимо установить (для Jenkins Jobs SynapseInstaller/MultiClusterInstaller всегда цикличный)
Изменение веса (и параметров вычитки из очереди для шлюзов и tpsPerMinute для Kafka-адаптера) на заданную величину;
При изменении веса -all шлюза, введенный вес применяется для всех связанных шлюзов;
Методы с входными параметрами |
Описание |
|---|---|
static processCanary(script, String folder, String canaryType, String templateName, Map config, DevCommon dev) |
/** |
private static List getHosts(configDataList) |
/** |
private static List getYamlData(script, Map config, DevCommon dev, glob) |
/** |
private static String getTemplateType(configDataList, templateName, canaryType) |
/** |
private static checkIfEvenCanaryIsNeeded(script, config, dev, canaryConfigDataList, templateType, templateName) |
/** |
private static getCanaryConfigsWithLocation(configDataListWithLocation, templateType, templateName) |
/** |
static getOldDeployments(script, config, deploymentName) |
/** |
static createParameterForConfGen(script, config, entry) |
/** |
static createParameterForConfGenChWeight(script, entry, inputData) |
/** |
static changeLocationAfterProcess(script, Map config, DevCommon dev, entry) |
/** |
static changeCanaryWeight(script, config, dev) |
/** |
private static cycleChCanWeight(script, actualInputs, entry, config, dev) |
/** |
static processChCanaryWeight(script, config, DevCommon dev, virtualServiceName, subset, configMapName) |
/** |
static findAndDeleteOldResources(script, config, dev) |
/** |