
Canary в Kubernetes с Argo Rollouts и Prometheus: автоматический анализ и откат
badcasedaily1 10 минут назад Canary в Kubernetes с Argo Rollouts и Prometheus: автоматический анализ и откат Средний 8 мин 316 Блог компании OTUS Kubernetes * Программирование * DevOps * Туториал Материал подготовлен в...
Вот важная новость с фронта ИИ: badcasedaily1 10 минут назад Canary в Kubernetes с Argo Rollouts и Prometheus: автоматический анализ и откат Средний 8 мин 316 Блог компании OTUS Kubernetes * Программирование * DevOps * Туториал Материал подготовлен в рамках курса «DevOps. Стандартный Kubernetes Deployment устроен очень просто: при выкате новой версии стартует новый ReplicaSet, постепенно заменяющий старый. Решение «продолжать ли выкат» он принимает только на основании readiness/liveness probes, то есть «контейнер живой и принимает трафик».
А что в этом контейнере за версия и не разломала ли она бизнес-логику, Deployment не знает и не интересуется. В большинстве сетапов этого недостаточно. Хочется выкатывать постепенно (canary), анализировать метрики (latency, error rate, доменные KPI) и автоматически останавливать или откатывать выкат, если метрики просели.
Технические детали
В статье поставим Argo Rollouts, развернём Rollout с пошаговым canary, прикрутим AnalysisTemplate, который ходит за метриками в Prometheus, и настроим автоматический откат при отклонениях. Заодно разберём важный момент про трафик — почему setWeight: 10 без service mesh означает не «десять процентов трафика», а «один под из десяти», и что с этим делать. Argo Rollouts в двух словахArgo Rollouts — это контроллер, который добавляет в кластер Kubernetes CRD Rollout, заменяющий стандартный Deployment.
У Rollout есть всё то же, что у Deployment (template, replicas, selector), плюс стратегия выката — canary (постепенный сдвиг трафика на новую версию) или blueGreen (параллельный запуск двух версий и потом переключение), с поддержкой ручных promote/abort и автоматического анализа. Самое полезное — analysis. На любом шаге выката можно запустить AnalysisRun, который выполнит запросы к источнику метрик (Prometheus, Datadog, NewRelic, веб-API, кастомный Job) и решит на основе ответа, продолжать выкат или откатываться.
Установка контроллера и CLIМинимальный вариант установки в кластер:kubectl create namespace argo-rollouts kubectl apply -n argo-rollouts \ -f для kubectl:curl -LO chmod +x kubectl-argo-rollouts-linux-amd64 sudo mv kubectl-argo-rollouts-linux-amd64 /usr/local/bin/kubectl-argo-rolloutsДашборд для визуального наблюдения за выкатами:kubectl argo rollouts dashboardПосле этого открывается на котором видно состояние выкатов вживую — какие шаги пройдены, какие AnalysisRun запущены, какие реплики в canary и stable, и какой текущий weight трафика. Минимальный Rollout с canaryЗаменяем Deployment на Rollout — структура почти идентична, spec. template тот же, что был, добавляется strategy.
canary со шагами:apiVersion: argoproj. io/v1alpha1 kind: Rollout metadata: name: api spec: replicas: 10 selector: matchLabels: app: api template: metadata: labels: app: api spec: containers: - name: api image: registry.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





