Progressive Delivery через Argo Rollouts: налаштування та автоматизація
Стандартний kubectl apply виконує rolling update: старі події замінюються новими один за одним. Якщо нова версія зламана, на момент виявлення вже 50% трафіку йде на неї. За статистикою Google Cloud, 40% інцидентів у продакшені пов'язані з невдалими деплоями. Ми використовуємо Argo Rollouts, щоб реалізувати Progressive Delivery — підхід, при якому нова версія застосунку поступово отримує трафік, а між кроками виконуються автоматичні перевірки метрик. Це скорочує середній час відновлення (MTTR) з годин до хвилин — в середньому в 6 разів швидше за ручний процес. Замість ручного моніторингу Rollouts виконує автоматичні перевірки на кожному етапі. При перевищенні порогу помилок розгортання зупиняється та відкочується. Наші сертифіковані інженери з 10-річним досвідом у Kubernetes гарантують, що ваші сервіси оновлюватимуться без даунтайму та з мінімальним ризиком. Замовте аудит вашого стеку — дізнайтеся, як впровадити Progressive Delivery без простоїв. Вартість аудиту — від 500$, а економія від впровадження сягає до $50 000 на рік за рахунок скорочення інцидентів.
Проблеми, які вирішує Argo Rollouts
- Довгий MTTR. Без автоматичного відкату інженери витрачають в середньому 30 хвилин на виявлення та відкат. Rollouts скорочує це до 2 хвилин — у 15 разів швидше — та знижує витрати на інциденти на 60%.
- Відсутність контролю трафіку. Rolling update не вміє направляти лише частину трафіку на нову версію. Canary-деплой з вагою 5% дозволяє тестувати на реальних користувачах, мінімізуючи вплив.
- Людський фактор. Ручний моніторинг метрик та прийняття рішення про відкат — джерело помилок. Rollouts автоматизує аналіз та відкат за заданими порогами, виключаючи ризик.
Яка економія від впровадження Progressive Delivery?
Один інцидент у продакшені може коштувати $10 000–$100 000. При середній частоті 5 інцидентів на місяць та скороченні MTTR з 30 до 2 хвилин, економія становить понад $50 000 на рік. Аудит нашого стеку коштує від $500, а комплексне впровадження — від $5 000. Інвестиція окупається за 1–2 місяці.
Як ми впроваджуємо Progressive Delivery
Наша команда (10+ років досвіду, 5 років на ринку, понад 100 успішних проектів) виконує впровадження за наступною методикою:
- Аудит інфраструктури. Визначаємо використовуваний ingress (nginx, Istio, Traefik), поточні метрики та alerting.
- Встановлення Argo Rollouts. Контролер розгортається у виділеному namespace, налаштовується RBAC.
- Міграція першого сервісу. Обираємо сервіс з низьким ризиком, конвертуємо Deployment в Rollout з простою стратегією.
- Розробка AnalysisTemplate. Підключаємо Prometheus, пишемо запити для error rate та latency.
- Тестування. Проводимо rollout з навмисною помилкою, перевіряємо автоматичний відкат.
- Інтеграція з ArgoCD. Налаштовуємо GitOps-пайплайн з правилами синхронізації.
- Документація та навчання. Передаємо команді інструкцію та проводимо вебінар на 2 години.
Стеки: Kubernetes 1.29+, Helm 3, Prometheus + Grafana, nginx-ingress або Istio, ArgoCD. Всі конфіги версіонуємо в Git. Приклад мінімального Rollout:
---
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: api-service
spec:
replicas: 10
strategy:
canary:
canaryService: api-canary-svc
stableService: api-stable-svc
steps:
- setWeight: 5
- pause: {duration: 10m}
- analysis:
templates:
- templateName: latency-and-errors
- setWeight: 50
- pause: {duration: 30m}
- setWeight: 100
Детальна конфігурація AnalysisTemplate
AnalysisTemplate — ключовий елемент безпеки, що задає перевірки метрик між кроками canary. Приклад для Prometheus:
---
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: latency-and-errors
spec:
metrics:
- name: error-rate
interval: 2m
count: 5
successCondition: result[0] <= 0.01
failureLimit: 2
provider:
prometheus:
address: http://prometheus-operated:9090
query: |
sum(rate(http_requests_total{status=~"5.."}[2m])) / sum(rate(http_requests_total[2m]))
- name: p99-latency
interval: 2m
count: 5
successCondition: result[0] < 0.5
failureLimit: 2
provider:
prometheus:
address: http://prometheus-operated:9090
query: |
histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[2m])) by (le))
---
Якщо error rate > 1% або p99 latency > 500ms двічі підряд, rollout автоматично відкочується. Без втручання людини. Це у 15 разів швидше за ручний моніторинг.
Управління трафіком
Інструмент підтримує плагіни для маршрутизації. Для nginx-ingress використовується механізм canary-аннотацій. Istio — через VirtualService з вагами. В обох випадках контролер автоматично оновлює вагу на кожному кроці. Для внутрішнього тестування можна налаштувати header-based routing: запити з заголовком X-Canary: true направляються в canary незалежно від ваги. Це дозволяє QA перевірити нову версію до масового включення.
| Критерій | Стандартний Deployment | Argo Rollouts |
|---|---|---|
| Управління трафіком | Ні | Canary, Blue-Green, Header-based |
| Автоматичний відкат | Ні | Так, за метриками |
| Час виявлення проблеми | Хвилини | Секунди |
| Інтеграція з CI/CD | Базова | Повна (ArgoCD, Jenkins) |
Коли доцільно використовувати Rollout замість Deployment?
Якщо сервіс критичний для бізнесу, вимагає zero-downtime оновлень, або у вас є метрики в Prometheus — використовуйте Rollout. Для простих внутрішніх сервісів без SLI достатньо стандартного Deployment.
Управління rollout вручну
Ви можете перервати, просунути або відкотити розгортання вручну:
kubectl argo rollouts abort api-service
kubectl argo rollouts promote api-service
kubectl argo rollouts get rollout api-service --watch Процес впровадження та строки
| Етап | Опис | Строк |
|---|---|---|
| Аудит | Оцінка інфраструктури, вибір першого сервісу | 0.5 дня |
| Встановлення | Встановлення Argo Rollouts, налаштування RBAC | 1 день |
| Міграція | Конвертація Deployment в Rollout, налаштування стратегії | 1 день |
| AnalysisTemplate | Написання запитів під метрики сервісу | 1 день |
| Тестування | Перевірка rollout, rollback | 1 день |
| Інтеграція | ArgoCD, документація, навчання | 1 день |
Загальний строк — від 5 робочих днів до 2 тижнів залежно від складності. Вартість розраховується індивідуально після аудиту.
Що входить в роботу
- Документація: інструкція з експлуатації Rollout, опис AnalysisTemplate, playbook з відкату.
- Доступи: надаємо доступ до Git-репозиторію з конфігураціями, дашбордам Grafana.
- Навчання: вебінар на 2 години для команди, запис та Q&A.
- Підтримка: 2 тижні після впровадження — консультації та виправлення помилок.
Типові помилки при впровадженні
- Відсутність failureLimit. Якщо не задати ліміт, один поганий замір може відкотити розгортання. Рекомендуємо failureLimit: 2 або 3.
- Занадто агресивні пороги. Встановлюйте початкові умови із запасом, потім посилюйте.
- Ігнорування header-based routing. Завжди корисно дати команді можливість тестувати canary до відкриття трафіку.
Як швидко окупається впровадження?
При середній вартості інциденту $10 000 та частоті 5 на місяць, економія від скорочення MTTR становить понад $50 000 на рік. Вартість впровадження (від $5 000) окупається за 1–2 місяці. Аудит за $500 дає чітке розуміння можливих покращень.
Налаштуйте Progressive Delivery без ризиків з нашою допомогою. Команда сертифікованих інженерів з 10-річним досвідом у Kubernetes та CI/CD проведе аудит вашої інфраструктури за 1 день. Зв'яжіться з нами — отримайте індивідуальну пропозицію. Замовте консультацію.







