Use Canary Release
Содержание
Introduction
Canary Release позволяет контролируемо развертывать обновления сервисов посредством постепенного перераспределения трафика и мониторинга в реальном времени. Эта функциональность:
- Снижает риски при развертывании в продуктивной среде
- Поддерживает несколько стратегий релиза (canary/blue-green/A/B тестирование)
- Обеспечивает автоматические механизмы отката
- Интегрируется с GitOps-процессами
Основная ценность: безопасное и наблюдаемое обновление версий сервисов
Features
- Ручной/автоматический режим управления трафиком
- Правила маршрутизации на основе заголовков и путей
- Метрики успешности и задержек в реальном времени
- Конфигурация через CRD для GitOps
Enabling Canary Release
Step 1: Access Service Configuration
- Перейдите: Service List > Target Service
- Выберите вкладку Canary Release
- Нажмите Enable в разделе Release Configuration
Step 2: Configure Release Parameters
analysis:
interval: 2m
maxWeight: 50
stepWeight: 10
threshold: 10
maxResponseTime: 500
minSuccessRate: 95
Parameter | Required | Default | Description |
---|
interval | Да | 2m | Интервал сдвига трафика |
maxWeight | Да | 50% | Порог продвижения |
threshold | Да | 10 | Максимально допустимые ошибки |
Routing Configuration Management
Traffic Distribution
http:
- route:
- destination: reviews-primary
weight: 80
- destination: reviews-canary
weight: 20
- 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
Field | Constraint | Example |
---|
name | Должно совпадать с именем сервиса | reviews |
namespace | Должно совпадать с namespace сервиса | prod |
Specification Details
spec:
delivertype: canary
targetRef:
name: reviews-v1
trafficControl: system
Field | Valid Values | Description |
---|
promoteControl | user/system | Режим подтверждения релиза |
trafficControl | user/system | Режим управления трафиком |
Monitoring & Validation
Key Metrics
Metric | Calculation | Threshold |
---|
Success Rate | 2xx/Total | >95% |
Latency | avg(response_time) | <500ms |
Errors | 5xx count | <10/period |
Release States
- Initializing ➔ 2. Progressing ➔ 3. Promoting ➔ 4. Completed
kubectl get canarydeliveries -n prod
Operational Constraints
- Несовместимо с существующей маршрутизацией сервисов
- Требуется уникальное имя сервиса в кластере
- Для сервисов под управлением GitOps ограничены возможности UI
- Политики безопасности остаются активными во время релиза