Авторизоваться
Аким Солянкин 10.02.2022 Опубликована

Развертывание Kubernetes Blue-Green 

Blue-Green deployment — это стратегия, направленная на развертывание с нулевым временем простоя. Для облачных приложений общепринятой практикой является сокращение времени простоя при обновлении версии приложения. Благодаря легкости, с которой мы можем предоставить новую инфраструктуру в облаке, становится проще внедрять новые способы улучшения развертывания.

Определение сине-зеленого развертывания

В этом посте мы рассмотрим, как использовать Blue-Green deployment с Kubernetes. Одним из лучших мест для поиска определения является глоссарий терминов, предоставленный Cloud Native Computing Foundation ( CNCF ). CNCF определяет развертывание Blue Green как

«Стратегия обновления работающих компьютерных систем с минимальным временем простоя. Оператор поддерживает две среды, называемые «синей» и «зеленой». Один обслуживает рабочий трафик (версия, которую в настоящее время используют все пользователи), а другой обновляется. После завершения тестирования в неактивной (зеленой) среде производственный трафик переключается (часто с помощью балансировщика нагрузки)».

Суть здесь в двух одинаковых средах, названных синей и зеленой, и переключении трафика с помощью балансировщика нагрузки. Давайте посмотрим, как это можно применить к среде Kubernetes.

Как выполнить развертывание Kubernetes Blue Green

  • nileshgule/blue-green-demo:blue
  • nileshgule/blue-green-demo:green

Начнем с создания двух версий приложения. Скажем, V1, которая развернута в реальной среде формирует нашу синюю среду. Для простоты я создал простое приложение ASP.Net Core. Оно упаковано в образ Docker с двумя тегами. Один тег имеет синий фон и будет использоваться для развертывания в синей среде. Другой образ контейнера с зеленой меткой будет использоваться для развертывания в зеленой среде. Два образа контейнера Docker публикуются в Dockerhub.

Шаг 1: Настройка синей среды

Как только образы контейнеров будут отправлены в реестр контейнеров, мы можем использовать развертывание Kubernetes для развертывания в кластере Kubernetes. Мы создаем blue-deployment, используя образ, помеченный как blue. Развертывание Kubernetes внутренне создаст набор реплик и связанный модуль. В шаблоне развертывания модуля мы устанавливаем метку app: blue.

Развертывание предоставляется за пределами кластера Kubernetes с помощью службы Kubernetes типа loadbalancer. Сервис использует селектор со значением app: blue.

Просмотрите общедоступный IP-адрес службы балансировки нагрузки, и нам будет представлена ​​​​веб-страница с синим фоном.

Шаг 2: Настройте зеленую среду

Второй шаг сине-зеленого развертывания — создание зеленой среды. Это делается путем создания второго развертывания Kuberentes с использованием тега image nileshgule/blue-green-demo:green. Мы также устанавливаем метку для развертывания как app: green. Остальные атрибуты в файле манифеста почти такие же, как у синего развертывания. После применения зеленого развертывания служба по-прежнему обслуживает 100% трафика в синей среде. Мы можем выполнить тестирование следующей версии или выпуска приложения, развернутого в зеленой среде. Если тесты пройдут успешно, мы можем переключить трафик на зеленую среду.

Шаг 3: Направьте трафик в зеленую среду

Последним шагом в сине-зеленом развертывании является переключение трафика на зеленую среду. Мы можем сделать это, отредактировав манифест службы. Мы обновляем селектор, чтобы выбрать модули с app: green label. Примените это изменение к службе Kubernetes. Весь трафик теперь перенаправляется в зеленую среду.

Обратите внимание, что синяя среда все еще существует, но активный или текущий трафик обслуживается зеленой средой. Если есть какие-либо проблемы с зеленой средой, мы можем снова изменить селектор в службе, чтобы он указывал обратно на синюю среду, что позволит нам быстро отменить изменения с минимальным воздействием на конечных пользователей.

YouTube видео

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

Вывод

Стратегию Blue-Green развертывания очень легко использовать в Kubernetes с помощью Service. Эта стратегия весьма полезна для сокращения времени простоя приложений без сохранения состояния. Приложения с состоянием немного сложнее. Это снижает риск при обновлении приложений. Имея резервную среду, мы можем легко вернуться к более старой версии без простоев. Надеюсь, вы нашли это полезным.

До следующего раза, кодируйте со страстью и стремитесь к совершенству.

Коментарии
Авторизоваться что-бы оставить комментарий
Присоединяйся в тусовку
Наш сайт использует файлы cookie для вашего максимального удобства. Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie