MLOps Path

4.4.1 · блок 4

Сборка контура E2E: Jenkins → Argo WF → MMS → Argo CD → Istio

Сборка контура E2E: Jenkins → Argo WF → MMS → Argo CD → Istio

Зачем это нужно

Отдельные инструменты вы уже знаете по модулям. Capstone блока 4 — сквозной контур MLOps: от триггера обучения до трафика на новую версию модели в prod с canary. Это карта «как всё соединено» в учебной и типовой корпоративной среде.

Основные идеи

Участники контура.

| Компонент | Роль в E2E |

|-----------|------------|

| **Jenkins** | CI: test/build serving image; trigger promote; webhook от Git |

| **Argo Workflows** | Train/batch/reprocess DAG on Kubernetes |

| **ClearML** | Log each train step; store artifacts |

| **MMS** | Approve model; champion pointer for prod |

| **Argo CD** | GitOps deploy Helm charts |

| **Istio** | Traffic split canary, observability hooks |

Happy path (один цикл).


[Trigger] cron / manual / data-ready webhook
    ↓
Argo Workflow: preprocess → train (ClearML Task) → evaluate
    ↓
Gate: metrics OK → tag candidate in ClearML
    ↓
Jenkins promote job → MMS Draft → human Approve
    ↓
Jenkins: build inference image, push registry, update MMS
    ↓
MR deploy-repo (image tag, model version)
    ↓
Argo CD sync staging → smoke tests
    ↓
MMS Promote Production + MR prod values
    ↓
Argo CD sync prod (rolling update)
    ↓
Istio: 95% v1.2.2 / 5% v1.3.0 canary → monitor → 100% new

Разделение репозиториев.

Argo Workflows и ClearML. Каждый step workflow — pod template; train pod вызывает train.py с Task.init. Workflow parameters: dataset version, hyperparams file. On exit: output parameter clearml_task_id для Jenkins.

Jenkins touchpoints.

1. CI on PR — pytest, docker build (no push prod).

2. Promote pipeline — parameterized CLEARML_TASK_ID.

3. Optional — trigger Workflow via API после merge data pipeline.

Argo CD. Application per environment; sync policy: staging auto, prod manual или automated с approval plugin. Helm values: image.tag, modelVersion, resource limits for GPU inference.

Istio canary. VirtualService: weights by subset labels version: v1.3.0. DestinationRule defines subsets. Metrics from Istio (latency, 5xx) + business KPI — gate для increase weight.

Secrets. Registry creds, ClearML API keys — Kubernetes Secrets / external vault; Jenkins credentials binding.

Observability hooks (preview block 5). ServiceMonitor for Prometheus; access logs to Loki; trace headers через Istio → OpenTelemetry.

Как это выглядит на практике

Diagram (logical):


Developer ──merge──► Git (ml-churn)
                         │
                    Jenkins CI (test, build)
                         │
Cron ──► Argo WF ──► ClearML (train task abc118)
                         │
                    Jenkins Promote ◄── MMS Approve
                         │
                    Harbor (image abc118-77)
                         │
                    Git (deploy-repo MR)
                         │
                    Argo CD ──► K8s Deployment
                         │
                    Istio ──► Users (canary 5%)

Values snippet environments/prod/values.yaml:


image:
  repository: harbor.corp/ml/churn-serving
  tag: abc118-77
model:
  version: "1.3.0"
  clearmlTaskId: abc118
istio:
  canary:
    enabled: true
    weight: 5

Fire-drill учебный: сломать readiness новой версии → Argo rollback + Istio 100% old subset + MMS revert champion.

Что сделать после занятия

Официальные материалы

Открыть интерактивную версию