Как настроить Azure DevOps для синих/зеленых развертываний с помощью служб приложений

Опубликовано: 28 Февраля, 2023
Как настроить Azure DevOps для синих/зеленых развертываний с помощью служб приложений

Основной проблемой для компаний с большим количеством приложений является развертывание. В зависимости от направления вашей деятельности вам обычно необходимо развертывать приложения в период простоя. Другими словами, поздно ночью, когда вы не повлияете на пользователей простоем. Для некоторых команд DevOps это может привести к частым ночным и сверхурочным работам, чтобы обеспечить успешное развертывание. Многочисленные поздние ночи и сверхурочные могут стать препятствием для команды и расходов. Чтобы бороться с этим, вы можете использовать метод синего/зеленого развертывания, чтобы переключать развертывания и выпуски на дневную задачу.

В этой статье показано, как использовать службу приложений Azure для создания дополнительного слота развертывания для рабочих серверов, а затем переключаться между ними. Это позволит вам выполнять развертывание в любое время в течение дня, поскольку у вас будут запущены две производственные среды. После завершения проверки вы сможете просто поменять серверы местами и запустить новую версию без сбоев. Как это возможно? Давайте рассмотрим, как начать работу.

Изображение 99

Обзор синих/зеленых развертываний

Вы спросите, как работает сине-зеленое развертывание? Простой. В стандартной среде Azure DevOps у вас обычно есть 4 среды: Dev, Test, Stage и Prod. Чтобы создать сине-зеленую стратегию развертывания, вам нужно добавить 2 дополнительных этапа: Staging-Blue и Prod-Blue. Вы можете увидеть это изменение на изображении ниже.

Изображение 100

Когда вы начнете, вы захотите иметь зеркальные отражения как сцены, так и продукта. В соответствии с соглашениями об именах вы можете назвать исходную постановку и продукт: «staging-green» и «prod-green».

По сути, вы отправляете новые версии на синюю стадию и рабочие версии. Затем вы проводите тестирование, чтобы убедиться, что все новые функции работают должным образом и в процессе не появились новые ошибки. Имейте в виду, что вы ничего не сделали со своим текущим рабочим веб-сайтом; он все еще работает в обычном режиме.

После завершения тестирования и проверки всех новых изменений используйте службы приложения для перенаправления трафика на Prod-Blue. Это расположение новой версии сайта. Это позволит вашей команде выполнять развертывание в нерабочее время и избавит вас от многих ночных развертываний, которых боятся многие ИТ-специалисты. Теперь давайте посмотрим, как настроить синие/зеленые развертывания с помощью Azure App Services.

Настройка сине-зеленых развертываний

Вы можете выполнить весь сине-зеленый процесс развертывания за 7 шагов:

  1. Перейдите на портал Azure и выберите .
  2. Выберите, для какого приложения вы хотите создать синее/зеленое развертывание.
  3. Создайте новый слот развертывания для определенного приложения (синий)
  4. Разверните новую версию приложения в новом слоте
  5. Протестируйте и убедитесь, что все изменения работают так, как вы ожидаете.
  6. Поменяйте местами свои слоты, оживите синий и отключите зеленый
  7. Разверните йо-зеленый и отключите синий для следующего развертывания

Чтобы начать работу, вам необходимо войти на портал Azure и перейти в Службы приложений. Оттуда вам нужно будет открыть приложение, для которого вы хотите настроить синие/зеленые развертывания, а затем выбрать слот развертывания.

Изображение 101

Открыв слот развертывания, вы можете добавить новый слот для вашего синего продукта. После того, как вы заполните его необходимой информацией и создадите, вы заметите, что трафик на нем нулевой. Это именно то, что вы хотите видеть, потому что это новый рабочий сайт, на который ваша команда будет вносить свои изменения.

Изображение 102

Не все настройки будут скопированы при создании клонированного слота.

Профессиональный совет

Убедитесь, что вы настроили все параметры так же, как и в оригинале, прежде чем делать какие-либо замены. Обратитесь к этому списку для всех настроек, которые вам нужно установить вручную:

  • КОРС
  • TLS/SSL
  • Веб-планировщики заданий
  • IP-ограничения
  • Публикация конечных точек
  • Пользовательские доменные имена
  • Настройки масштаба
  • Всегда включен
  • Параметры журнала диагностики

Просто перейдите на вкладку настроек в новом слоте развертывания и обновите эти настройки. Теперь давайте перейдем к тому, как развернуть последнюю версию вашего приложения.

Разверните последнюю версию на Prod-Blue, затем замените

После обновления всех настроек вы хотите развернуть последнюю версию приложения в Prod-Blue. Затем ваша команда захочет вручную подтвердить изменения, и ваша команда QA должна запустить свой набор тестов для этого конкретного выпуска.

На этом этапе вы проверили и протестировали все изменения. Затем вы можете перейти к слотам и поменять их местами, чтобы весь трафик перенаправлялся с prod green на Prod-Blue. Имея две производственные среды, вы можете поддерживать работу одного сайта, готовя новую версию для развертывания со всеми изменениями.

Чтобы переключиться с одного на другой, просто нажмите на кнопку переключения. Ваш новый релиз теперь доступен со всеми вашими изменениями. Это так просто! Это займет всего несколько секунд, и вы можете сделать это в любое время суток, не нарушая работу веб-сайта.

Далее я проясню распространенную путаницу в отношении того, что произойдет при следующем развертывании. Теперь ваш действующий сайт находится на Prod-Blue, и вы переместите свою новую версию на prod-green.

Изображение 103

Что дальше? Прод Грин

Итак, вы завершили сине-зеленые развертывания в Azure. На этом этапе вы можете спросить , как развертывать дальше, если prod blue теперь является вашим рабочим сайтом. В следующий раз, когда вы будете выполнять развертывание, вы будете развертывать его в prod green. В приведенных выше шагах вы поменяли местами рабочие слоты, чтобы направить трафик с зеленого на синий. Теперь вы развернетесь на зеленом, проведете тестирование и проверку, а затем поменяете сайты, чтобы трафик перенаправлялся с синего на зеленый.

Изображение 104

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

Проблемы внедрения синего/зеленого развертывания

В то время как сине-зеленые развертывания имеют большие преимущества. Это не значит, что они не приходят с проблемами. Автоматизация развертывания с двумя разными производственными средами может повлечь за собой дополнительные расходы. Допустим, вы используете AWS для создания всей своей инфраструктуры, тогда вы можете удвоить свои капитальные затраты на поддержку дублирующих производственных сред. Вы также можете увеличить общее время, затрачиваемое на обслуживание вашей инфраструктуры, что связывает кадровые ресурсы.

Еще одна проблема, с которой вы можете столкнуться, — это создание автоматизированного конвейера, способного работать в мобильной рабочей среде. Вам понадобится хорошая информационная панель, чтобы отслеживать движения и изменения воронки продаж.

Наконец, вы можете получить некоторый отпор от руководства с помощью политик или печально известного «мы всегда так делали».

Последние мысли

Azure DevOps сделал сине-зеленые развертывания невероятно простыми. Так просто, это просто нажатие кнопки! Мы используем App Services для создания нового производственного слота. В свою очередь, этот производственный цех будет служить параллельной производственной площадкой. Таким образом, все новые изменения будут готовы к тестированию и проверке во время работы сайта. Это сделано для предотвращения сбоев в работе приложения. После успешной проверки приложения вы можете переключиться с зеленого на синий одним нажатием кнопки. Как только ваша команда совершит переход, вы больше никогда не захотите возвращаться к поздним ночам для развертывания во время периода простоя.

Часто задаваемые вопросы

Можно ли использовать конвейеры для синего/зеленого развертывания?

Конечно, вы можете использовать и этот метод. Вам нужно создать две среды prod. Вставьте новый код в единицу, а затем вручную измените трафик на недавно развернутый сайт с помощью балансировщика нагрузки. Это после запуска тестов и проверок, конечно.

Какими еще способами я могу выполнить синее/зеленое развертывание в Azure?

Помимо метода, описанного в этой статье, у вас есть несколько других вариантов. Вы можете использовать диспетчер трафика Azure и воспользоваться его методом взвешенной циклической маршрутизации. Другой метод — использовать шлюз приложений с двумя резервными пулами. В этом сценарии вам потребуется установить правила для переключения между двумя серверными пулами.

Как обрабатываются откаты?

Легкий. Просто вернитесь к предыдущему производственному сайту. Например, вы отправили новые изменения в Prod-Blue и запустили его, но забыли проверить и найти ошибку. Просто нажмите кнопку обмена, чтобы вернуться к зеленому, а затем отработайте свои ошибки на синем. Когда будете готовы, просто поменяйтесь местами! Контроль версий и откаты важны в этом направлении бизнеса!

Можно ли автоматизировать замену слотов?

Да, вы можете использовать PowerShell для автоматизации почти всего. Обязательно ознакомьтесь с документацией Microsoft, чтобы узнать больше о том, как использовать powershell в Azure Pipelines для замены слотов для синего/зеленого развертывания.

Можно ли использовать обмен слотами в Kubernetes?

Да, вы можете использовать Kubernetes для управления своими образами, а также для синего/зеленого развертывания. У Microsoft и GitHub есть несколько советов и приемов, как заставить это работать. Подробнее об этом можно прочитать на GitHub.

Ресурсы

Работа со службами веб-приложений Azure

Узнайте больше об использовании служб веб-приложений Azure здесь.

Подключения службы Azure DevOps

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

Переход с Azure Portal/Powershell на Azure DevOps

Испытайте изменения при переходе с Portal на DevOps и раскройте свой истинный потенциал здесь.

Azure Blueprints: создание и автоматизация более качественных и быстрых развертываний

Узнайте больше об улучшении своих развертываний с помощью автоматизации в Azure здесь.

Интеграция Azure DevOps с вашей macOS: пошаговое руководство

Узнайте, как интегрировать Azure в Mac OS для всех пользователей Mac прямо здесь.