Сине-зеленое развертывание является широко используемой стратегией управления выпусками программного обеспечения. В нем задействованы две идентичные аппаратные среды: одна активна и обслуживает пользователей, а другая остается в резерве. Такой подход упрощает управление обновлениями программного обеспечения и снижает риск простоя системы.
Новый код первоначально выпускается в промежуточных средах, где он подвергается тщательному тестированию. После того как команда утверждает обновленный код, конфигурация маршрутизатора настраивается для переключения трафика приложения на текущую производственную среду. Если возникают какие-либо проблемы, они возвращаются к предыдущей производственной среде, чтобы продолжить использование исходной версии программного обеспечения.
Некоторые заслуживающие внимания преимущества сине-зеленых развертываний включают в себя:
Kubernetes становится все более популярным как среда для разработки, тестирования и развертывания в производственной среде. Несмотря на то, что это упрощает развертывание приложений, Kubernetes не предлагает нативную сине-зеленую функциональность развертывания из коробки. Вместо этого он предоставляет объект Deployment, который позволяет чередовать обновления, которые могут в некоторой степени заменить модули приложения его последней версией без простоев.
Последовательное развертывание имеет определенные ограничения. Они могут усложнить откат и могут потребовать проверки работоспособности Kubernetes для оценки состояния модулей в развертывании. Кроме того, последовательное развертывание может занять больше времени по сравнению с чисто сине-зеленым шаблоном, когда переключение на новую версию происходит мгновенно.
Для эффективной реализации сине-зеленых развертываний с помощью Kubernetes рассмотрите следующие инструменты:
Argo Rollouts — это набор контроллеров Kubernetes и определений пользовательских ресурсов (CRD) с открытым исходным кодом, который добавляет расширенные функции развертывания, такие как сине-зеленое и канареечное развертывание, эксперименты и другие возможности прогрессивной доставки. При необходимости он интегрируется с входными контроллерами и сервисными сетками Kubernetes для управления трафиком во время обновлений. Он даже может запрашивать и интерпретировать метрики из других систем для проверки ключевых показателей эффективности (KPI) и автоматически продвигать или откатывать выпуски.
Flagger — это инструмент прогрессивной доставки, который автоматизирует процесс выпуска приложений, работающих в Kubernetes. Это снижает риск внедрения новых версий программного обеспечения в рабочую среду за счет постепенного перенаправления трафика на обновленную версию при оценке показателей и выполнении тестов на соответствие. Flagger поддерживает несколько стратегий развертывания, таких как канареечный выпуск, A/B-тестирование и сине-зеленое развертывание, а также интегрируется с различными входными контроллерами Kubernetes, сервисными сетками и системами мониторинга.
GitLab CI/CD — это многофункциональная платформа DevOps, которая оптимизирует крупные проекты по разработке программного обеспечения. В дополнение к репозиторию кода и возможностям отслеживания проблем, GitLab предлагает автоматизацию CI/CD, которая поддерживает развертывание вручную и по расписанию в производственных системах Kubernetes, включая прогрессивные стратегии развертывания, такие как сине-зеленое развертывание.
CircleCI — это платформа CI/CD, которая помогает командам инженеров создавать, тестировать и развертывать программное обеспечение, отслеживая изменения кода в режиме реального времени с помощью пользовательского интерфейса панели управления. CircleCI поддерживает развертывание в кластерах Kubernetes и интегрируется с другими службами для стратегий развертывания, таких как флаги функций, сине-зеленое и канареечное развертывание.
В этой статье представлен сине-зеленый шаблон развертывания, его различные преимущества и варианты реализации этого метода в среде Kubernetes. Используя такие инструменты, как Argo Rollouts, Flagger, GitLab CI/CD или CircleCI, вы можете добиться более плавного выпуска программного обеспечения, минимизировать время простоя и улучшить общее впечатление как разработчиков, так и конечных пользователей в вашей среде Kubernetes. Изучая эти инструменты, учитывайте уникальные требования вашего конвейера разработки программного обеспечения, чтобы определить решение, которое лучше всего соответствует потребностям вашей команды.