Использование Canary Release
Содержание
Введение
Canary Release позволяет контролируемо развертывать обновления сервисов посредством постепенного переключения трафика и мониторинга в реальном времени. Эта функциональность:
- Снижает риски при развертывании в продуктивных средах
- Поддерживает несколько стратегий релиза (canary/blue-green/A/B тестирование)
- Обеспечивает автоматические механизмы отката
- Интегрируется с GitOps-процессами
Основная ценность: безопасное и наблюдаемое обновление версий сервисов
Особенности
- Ручной/автоматический режим управления трафиком
- Правила маршрутизации на основе заголовков и путей
- Метрики успешности и задержек в реальном времени
- Конфигурация на основе CRD для GitOps
Преимущества
Точное управление: разбиение трафика с точностью до 1%
Видимость: интегрированная панель мониторинга
Безопасность: автоматический откат при превышении порогов ошибок
Соответствие: соблюдение политик безопасности во время релиза
Включение Canary Release
Шаг 1: Доступ к конфигурации сервиса
- Перейдите: Service List > Target Service
- Выберите вкладку Canary Release
- Нажмите Enable в разделе Release Configuration
Шаг 2: Настройка параметров релиза
analysis:
interval: 2m
maxWeight: 50
stepWeight: 10
threshold: 10
maxResponseTime: 500
minSuccessRate: 95
Параметр | Обязательный | Значение по умолчанию | Описание |
---|
interval | Да | 2m | Интервал переключения трафика |
maxWeight | Да | 50% | Порог продвижения |
threshold | Да | 10 | Максимально допустимые ошибки |
Управление конфигурацией маршрутизации
Распределение трафика
http:
- route:
- destination: reviews-primary
weight: 80
- destination: reviews-canary
weight: 20
Маршрутизация на основе заголовков
- match:
- headers: { "user-type": "internal" }
route:
- destination: reviews-canary
Тестирование по конкретным путям
- match:
- uri: { prefix: "/api/v2" }
route:
- destination: reviews-canary
weight: 20
Справочник CanaryDelivery CRD
Требования к метаданным
Поле | Ограничение | Пример |
---|
name | Должно совпадать с именем сервиса | reviews |
namespace | Должно совпадать с namespace сервиса | prod |
Детали спецификации
spec:
delivertype: canary
targetRef:
name: reviews-v1
trafficControl: system
Поле | Допустимые значения | Описание |
---|
promoteControl | user/system | Режим подтверждения релиза |
trafficControl | user/system | Режим управления трафиком |
Мониторинг и валидация
Ключевые метрики
Метрика | Расчет | Порог |
---|
Success Rate | 2xx/Total | >95% |
Latency | avg(response_time) | <500ms |
Errors | Кол-во 5xx | <10/период |
Состояния релиза
- Initializing ➔ 2. Progressing ➔ 3. Promoting ➔ 4. Completed
kubectl get canarydeliveries -n prod
Операционные ограничения
- Несовместимость с существующей маршрутизацией сервисов
- Требуется уникальное имя сервиса в кластере
- Для сервисов, управляемых GitOps, ограничены возможности UI
- Политики безопасности остаются активными во время релиза