Стратегии развёртывания: Blue-Green и Canary
Выйдите за рамки поэтапных обновлений и узнайте, как безопасно выпускать версии с помощью шаблонов развёртывания Blue-Green и Canary в Kubernetes.
«Стратегии развёртывания: Blue-Green и Canary» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Зачем нужны не только поэтапные обновления
При поэтапных обновлениях поды заменяются постепенно, поэтому во время перехода одновременно работают старая и новая версии. Для рискованных выпусков может понадобиться полный контроль над тем, какие пользователи видят новую версию.
Сине-зелёная и канареечная стратегии дают такой контроль.
Идея сине-зелёного развёртывания
При сине-зелёном развёртывании запускаются две идентичные среды:
- Синяя — текущая рабочая версия
- Зелёная — новая версия, полностью развёрнутая, но ещё не получающая трафик
Весь трафик сразу переключается с синей среды на зелёную.
Два развёртывания, один сервис
Каждая версия представляет собой отдельное развёртывание с меткой версии. Один сервис выбирает ту цветовую версию, которая является активной.
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-blue
spec:
replicas: 3
selector:
matchLabels:
app: web
version: blue
template:
metadata:
labels:
app: web
version: blue
spec:
containers:
- name: web
image: myapp:1.0Переключение трафика
Чтобы сделать зелёную версию рабочей, достаточно изменить селектор сервиса так, чтобы он указывал на зелёную версию. Переключение происходит мгновенно.
kubectl patch service web -p '{"spec":{"selector":{"app":"web","version":"green"}}}'Преимущества и недостатки сине-зелёной стратегии
- Плюс: мгновенный откат переключением обратно на синюю версию
- Плюс: во время выпуска версии не смешиваются
- Минус: на период одновременной работы требуется вдвое больше ресурсов
Идея канареечного выпуска
При канареечном выпуске сначала небольшая доля трафика направляется на новую версию. Если метрики выглядят нормально, её долю постепенно увеличивают.
Название происходит от канареек, которых шахтёры использовали для раннего обнаружения опасности.
Канареечный выпуск с подсчётом реплик
В простом канареечном выпуске два развёртывания используют одну и ту же метку сервиса. Трафик распределяется примерно пропорционально соотношению реплик.
# stable: 9 replicas, canary: 1 replica => ~10% to canary
kubectl scale deployment app-stable --replicas=9
kubectl scale deployment app-canary --replicas=1Расширение канареечного выпуска
По мере роста уверенности вы постепенно увеличиваете долю канареечной версии, а затем выводите старую версию, когда весь трафик начинает обслуживаться ею.
kubectl scale deployment app-canary --replicas=5
kubectl scale deployment app-stable --replicas=5
# later, fully promote
kubectl scale deployment app-canary --replicas=10
kubectl scale deployment app-stable --replicas=0Наблюдение за канареечной версией
Главная цель канареечного выпуска — наблюдение. Следите за частотой ошибок, задержкой и журналами до расширения выпуска.
kubectl get pods -l version=canary
kubectl logs -l version=canary --tail=50Выбор стратегии
- Сине-зелёная: лучший выбор, если нужны чистое мгновенное переключение и быстрый откат
- Канареечная: лучший выбор, если нужно ограничить масштаб последствий и проверить версию на реальном трафике
- Поэтапная: хороший вариант по умолчанию для обычных обновлений с низким риском
Инструменты помимо kubectl
Для точного разделения трафика (например, ровно 5 %) команды используют сервисные сетки, такие как Istio, и инструменты постепенной доставки, например Argo Rollouts и Flagger, которые автоматизируют анализ канареечной версии.
Быстрая проверка
Выберите утверждение, которое лучше всего описывает канареечный выпуск.
Итоги
Вы сравнили продвинутые стратегии выпуска. Сине-зелёная стратегия мгновенно переключает весь трафик между двумя средами, обеспечивая быстрый откат, а канареечная постепенно направляет трафик на новую версию, снижая риск. Обе стратегии основаны на примитивах развёртывания и сервиса, с которыми вы уже знакомы.
Часто задаваемые вопросы
Урок «Стратегии развёртывания: Blue-Green и Canary» бесплатный?
Да — полный текст урока «Стратегии развёртывания: Blue-Green и Canary» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Стратегии развёртывания: Blue-Green и Canary»?
Выйдите за рамки поэтапных обновлений и узнайте, как безопасно выпускать версии с помощью шаблонов развёртывания Blue-Green и Canary в Kubernetes. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Стратегии развёртывания: Blue-Green и Canary»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Разбор Deployments
- Масштабирование приложений с помощью ReplicaSets
- Обновления без остановки и откаты
- Стратегии развёртывания: Blue-Green и Canary