Канареечное развертывание в SynapseInstaller#

Для канареечного развертывания используется Jenkins Job SynapseInstaller (описанного в подразделе «Pipelines» раздела «Дополнительная документация» текущего документа). Pipeline автоматизирует действия описанные в ниже представленных инструкциях. Поэтому важно ознакомится с ними перед использованием канареечного развертывания.

Пререквезиты#

  1. Для использования канареечного развертывания необходимо наличие у SA Jenkins права на list объектов в проекте системы оркестрации приложений.

Правила формирования конфигураций#

  1. Имя VirtualService и DestinationRule должно совпадать с именем приложения и иметь постфиксы -vs-canary, -dr-canary. Именно по данным постфиксам pipeline определяет связи. Пример: патч содержит Deployment, его имя srv. Для канареечного развертывания этого приложения должен быть создан VirtualService srv-vs-canary и DestinationRule srv-dr-canary.

  2. При развороте шлюза ConfigMap должен совпадать с именем приложения и иметь постфикс -config. Именно по данному постфиксу pipeline определяет связи. Пример : патч содержит Deployment, его имя mq-gateway. Для канареечного развертывания этого приложения должен быть создан ConfigMap mq-gateway-config.

  3. Все конфигурации сервиса/шлюза должны находиться в одном шаблоне, который называется именем приложения и имеет постфикс -template или в одном HELM CHART. Пример : патч содержит Deployment, его имя mq-gateway. Для канареечного развертывания этого приложения должен быть создан шаблон с конфигурациями именуемый mq-gateway-template.yml.

  4. Для канареечного развертывания должна быть выполнена первоначальная настройка. то есть канареечное развертывание возможно только для существующих сервисов. Deployment сервиса/шлюза должен существовать в проекте и для него уже должны быть созданы VirtualService, DestinationRule и ConfigMap (для шлюзов).

  5. Текущий функционал предполагает увеличение нагрузки с 0 до 100% для новой версии приложения. Если в VirtualService указано несколько блоков destination, вес будет отниматься последовательно у каждого в пользу нового.

  6. Успешным завершением работы pipeline с параметром needCanaryUpload считается полный перевод нагрузки на новую версию приложения.

  7. В качестве версии нового приложения при канареечном развертывании будет использовано имя дистрибутива. Например: sp-02-724-00-25-ticket-1597.

  8. Название конфигурации Service должно совпадать со значением полей host в VirtualService и DestinationRule.

  9. VirtualService должен быть только один для каждого хоста.

Алгоритм канареечного развертывания#

Перед началом увеличения параметра weight в VirtualService pipeline выгружает текущий VirtualService для возможности отката на стабильную версию. Откат может быть запущен, при ошибке или при отказе от установки, с предварительным подтверждением со стороны администратора.

canary_algorithm