04 · MLOps-цикл и реестры4.3–4.4 · ClearML, MMS и E2E-контур4.4.1сложный

Сборка контура 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

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

  • ml-churn — код train + serving, Dockerfile, Jenkinsfile.

  • ml-churn-deploy — Helm chart, environments/*/values.yaml.

  • ClearML Server, MMS — platform services (Helm в platform namespace).

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.

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

  • Нарисуйте ваш E2E diagram с именами namespace и repo.

  • Перечислите 5 manual vs automatic шагов — что сознательно оставить manual на первом этапе.

  • Свяжите с модулем 3.4: какие Helm values меняются при promote модели.

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