Use Canary Release

Содержание

Introduction

Canary Release позволяет контролируемо развертывать обновления сервисов посредством постепенного перераспределения трафика и мониторинга в реальном времени. Эта функциональность:

  • Снижает риски при развертывании в продуктивной среде
  • Поддерживает несколько стратегий релиза (canary/blue-green/A/B тестирование)
  • Обеспечивает автоматические механизмы отката
  • Интегрируется с GitOps-процессами

Основная ценность: безопасное и наблюдаемое обновление версий сервисов

Features

  • Ручной/автоматический режим управления трафиком
  • Правила маршрутизации на основе заголовков и путей
  • Метрики успешности и задержек в реальном времени
  • Конфигурация через CRD для GitOps

Enabling Canary Release

Step 1: Access Service Configuration

  1. Перейдите: Service List > Target Service
  2. Выберите вкладку Canary Release
  3. Нажмите Enable в разделе Release Configuration

Step 2: Configure Release Parameters

analysis:
  interval: 2m
  maxWeight: 50
  stepWeight: 10
  threshold: 10
maxResponseTime: 500
minSuccessRate: 95
ParameterRequiredDefaultDescription
intervalДа2mИнтервал сдвига трафика
maxWeightДа50%Порог продвижения
thresholdДа10Максимально допустимые ошибки

Routing Configuration Management

Traffic Distribution

http:
- route:
  - destination: reviews-primary
    weight: 80
  - destination: reviews-canary
    weight: 20

Header-Based Routing

- match:
  - headers: { "user-type": "internal" }
  route:
    - destination: reviews-canary

Path-Specific Testing

- match:
  - uri: { prefix: "/api/v2" }
  route:
    - destination: reviews-canary
      weight: 20

CanaryDelivery CRD Reference

Metadata Requirements

FieldConstraintExample
nameДолжно совпадать с именем сервисаreviews
namespaceДолжно совпадать с namespace сервисаprod

Specification Details

spec:
  delivertype: canary
  targetRef:
    name: reviews-v1
  trafficControl: system
FieldValid ValuesDescription
promoteControluser/systemРежим подтверждения релиза
trafficControluser/systemРежим управления трафиком

Monitoring & Validation

Key Metrics

MetricCalculationThreshold
Success Rate2xx/Total>95%
Latencyavg(response_time)<500ms
Errors5xx count<10/period

Release States

  1. Initializing ➔ 2. Progressing ➔ 3. Promoting ➔ 4. Completed
kubectl get canarydeliveries -n prod

Operational Constraints

  • Несовместимо с существующей маршрутизацией сервисов
  • Требуется уникальное имя сервиса в кластере
  • Для сервисов под управлением GitOps ограничены возможности UI
  • Политики безопасности остаются активными во время релиза