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
Разделение репозиториев.
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 модели.