Зачем это нужно
Отдельные инструменты вы уже знаете по модулям. 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.
CI on PR — pytest, docker build (no push prod).
Promote pipeline — parameterized
CLEARML_TASK_ID.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 модели.