Перейти к содержимому

Статья

Kubeflow + Argo CD: GitOps MLOps на Kubernetes

Архитектурная карта Kubeflow Pipelines, Trainer, KServe и Kueue с Argo CD GitOps: структура Git, sync waves, гейты продвижения, canary serving, GPU FinOps и чеклист выката

  • 6 мин чтения

Это подробный справочник. Для пятиминутного обзора см. сопутствующий блог.

Kubeflow и Argo CD GitOps MLOps на Kubernetes

1. Введение: MLOps нужны две плоскости управления

Машинное обучение на Kubernetes ломается двумя предсказуемыми способами. Команды либо воспринимают обучение как набор ad-hoc Jobs без lineage, либо serving — как разовый kubectl apply без audit trail. Kubeflow и Argo CD закрывают противоположные половины этой проблемы.

Kubeflow — ML control plane: pipelines, распределённое обучение, tracking экспериментов, model registry и KServe. Argo CD — delivery control plane: pull-based GitOps, чтобы состояние кластера совпадало с Git — включая саму платформу Kubeflow и каждый production InferenceService.

Эта статья — практическое архитектурное руководство для platform- и MLOps-инженеров. Предполагается знание Kubernetes и базового GitOps (см. наш пост про continuous delivery с Argo CD & Flux). Здесь мы фокусируемся на том, как две системы стыкуются для ML-нагрузок в 2026 году.

2. Карта Kubernetes MLOps 2026

Этап жизненного цикла Инструмент Роль
Оркестрация pipelinesKubeflow Pipelines 2.xDAG контейнеризированных шагов; отслеживаемые runs
Распределённое обучениеKubeflow Trainer (TrainJob)PyTorch / JAX / XGBoost / DeepSpeed jobs
Очередь GPUKueue (+ optional Volcano)Fair share, gang scheduling, квоты
Serving моделейKServeAutoscaled InferenceService; canary splits
AutoscalingKEDA + HPAEvent-driven scale, включая scale-to-zero
Delivery & rollbackArgo CDGit как источник истины для manifests
ObservabilityPrometheus / Grafana / drift toolsСигналы infra + качества модели

Argo Workflows по-прежнему встречается «под капотом» у некоторых backend pipelines, но думайте в терминах Kubeflow Pipelines IR / v2 для authoring и Argo CD для continuous delivery Kubernetes-ресурсов — не путайте «Argo Workflows» с «Argo CD».

3. Чёткое владение: что делает Kubeflow vs что делает Argo CD

3.1 Владеет Kubeflow

  • Authoring и запуск training / ETL / evaluation DAG
  • Жизненный цикл GPU-job и метаданные экспериментов
  • Регистрация версий моделей и lineage в Model Registry
  • Определение того, как модель может обслуживаться (runtime, resources) — часто через сгенерированные manifests

3.2 Владеет Argo CD

  • Установка и апгрейд компонентов Kubeflow (GitOps-платформа)
  • Синхронизация определений pipelines и CronWorkflows, запускающих обучение
  • Продвижение изменений InferenceService между окружениями
  • Мгновенный аудируемый rollback через историю Git
Жёсткое правило. Крупные бинарники (datasets, checkpoints, веса ONNX/SafeTensors) никогда не кладут в Git. Храните их в S3/GCS/MinIO/PVC. В Git — указатель (storageUri, digest, tags) и Kubernetes YAML, который применяет Argo CD.

4. Рекомендуемая структура Git

ml-platform/                 # Argo CD App: install Kubeflow once
  overlays/
    staging/
    production/
ml-apps/                     # Argo CD App-of-Apps or projects
  pipelines/
    fraud-detector/
  serving/
    fraud-detector/
      base/inferenceservice.yaml
      overlays/
        staging/
        production/
  components/                # reusable KFP components (OCI or YAML)

Держите sync platform и application раздельно. Data scientists открывают PR против ml-apps; platform-инженеры владеют ml-platform. Используйте Argo CD Projects + RBAC, чтобы плохой pipeline PR не мог переписать control plane Kubeflow.

5. Управление Kubeflow через Argo CD

Ручные установки Kubeflow хрупки: много CRD, ограничения порядка и пути апгрейда. Рассматривайте платформу как Argo CD Application (или ApplicationSet) с:

  • Sync waves — сертификаты, storage, MySQL/Postgres (или managed DB), credentials MinIO/S3, затем KFP / Trainer / KServe
  • Health checks — ждать CRD и webhooks перед sync зависимых apps
  • Managed-сервисы в production — заменить in-cluster MySQL/MinIO на Cloud SQL/RDS и S3, когда вырастете из all-in-one демо

Эскиз Application (иллюстративно):

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kubeflow-platform
  namespace: argocd
  annotations:
    argocd.argoproj.io/sync-wave: "0"
spec:
  project: ml-platform
  source:
    repoURL: https://git.example.com/org/ml-platform.git
    targetRevision: main
    path: overlays/production
  destination:
    server: https://kubernetes.default.svc
    namespace: kubeflow
  syncPolicy:
    automated:
      prune: false
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
      - ServerSideApply=true

6. Pipelines как GitOps-ресурсы

С Kubeflow Pipelines v2 / Kubernetes-native API скомпилированные pipelines можно управлять как ресурсами кластера. Workflow становится:

  1. Написать pipeline на Python (KFP SDK)
  2. Скомпилировать в YAML
  3. Закоммитить в ml-apps/pipelines/...
  4. Argo CD синхронизирует; runs запускаются через UI, API или CronWorkflow, также хранимый в Git

Всегда задавайте лимиты CPU, памяти и GPU на шагах. Неограниченные training steps разрушат multi-tenant кластеры быстрее любой плохой модели.

7. Продвижение модели: registry → Git → Argo CD

Критический hand-off:

  1. Training run завершается; evaluation metrics проходят пороги.
  2. Model Registry фиксирует новую версию с URI + metadata (accuracy, fairness, signer).
  3. Автоматизация (или человек) открывает PR, обновляющий storageUri (и image tag / runtime) в serving overlay.
  4. После merge Argo CD выкатывает KServe. Предпочитайте canary: поставьте canaryTrafficPercent на 10%, следите за error rate и latency, затем promote.
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: fraud-detector
spec:
  predictor:
    model:
      modelFormat:
        name: sklearn
      storageUri: s3://models/fraud/v1.4.2/
      resources:
        requests:
          cpu: "1"
          memory: 2Gi
        limits:
          cpu: "2"
          memory: 4Gi

Rollback — не клик в dashboard, а git revert этого изменения URI. Argo CD возвращает кластер к предыдущему desired state.

8. GPU, квоты и FinOps

  • Используйте Kueue, чтобы TrainJobs ждали fair GPU capacity вместо падений или oversubscribe.
  • Разделяйте node pools для training vs latency-sensitive inference, когда возможно.
  • Считайте стоимость на pipeline run (GPU-seconds × rate). GitOps не отменяет FinOps — он делает spend атрибутируемым к commit и версии модели.
  • Для MIG / time-slicing на NVIDIA документируйте стратегию партиций в platform-репозитории, чтобы DevicePlugin configs под Argo CD оставались согласованными.

9. Безопасность и multi-tenancy

  • Kubeflow Profiles изолируют команды; сопоставьте их с Argo CD Projects.
  • Храните cloud credentials в Sealed Secrets / External Secrets — никогда plain ConfigMaps в Git.
  • Требуйте registry metadata gates (напр. fairness_score, sign_off_user), прежде чем promotion bot сможет открыть prod PR.
  • Network policies: training jobs не должны нуждаться в unrestricted egress; serving pods — только model storage и клиенты.

10. Observability за пределами pod metrics

Prometheus по GPU utilisation необходим, но недостаточен. Подключите:

  • Алерты падений pipeline (run status, не только Deployment CrashLoop)
  • Serving SLO: latency, error rate, saturation
  • Мониторы data/model drift, которые могут открыть ticket или перезапустить training CronWorkflow

Когда срабатывает drift, путь remediation всё ещё GitOps: новый run → новый URI → PR → sync Argo CD — не ручная перезапись на ноде.

11. Чеклист выката

  1. Установить Argo CD; создать проекты ml-platform и ml-apps.
  2. GitOps-установка Kubeflow с sync waves; проверить KFP UI и CRD KServe.
  3. Поднять object storage + Model Registry; задокументировать URI-конвенции.
  4. Онбордить один golden path pipeline (train → evaluate → register).
  5. Добавить один InferenceService под Argo CD сначала со staging overlay.
  6. Включить canary promotion; отработать drill git revert.
  7. Добавить квоты Kueue и GPU FinOps dashboards перед multi-team rollout.

12. Анти-паттерны

  • Коммитить 4 ГБ weight-файлов в Git LFS «для удобства»
  • Позволять notebook’ам делать kubectl apply production InferenceServices
  • Одна Argo CD Application, смешивающая platform и все team pipelines (blast radius)
  • Нет resource limits на training steps
  • Путать Argo Workflows (execution) с Argo CD (desired-state sync)
  • Пропускать staging — продвигать сразу с laptop-эксперимента в prod traffic

13. Когда не использовать этот стек

SME, запускающие один private LLM на workstation (см. наши AI SME Packages), не нуждаются в Kubeflow + Argo CD в первый день. Внедряйте эту архитектуру, когда есть несколько моделей, concurrent GPU users, regulated change control или несколько окружений, которые должны оставаться идентичными.

14. Заключение

Kubeflow и Argo CD дополняют друг друга. Kubeflow делает ML-работу запускаемой и воспроизводимой на Kubernetes. Argo CD делает ML-инфраструктуру и model serving декларативными, аудируемыми и обратимыми. Победный паттерн прост: артефакты в object storage, pointers и YAML в Git, обучение в Kubeflow, delivery и rollback в Argo CD.

Сопутствующий блог — шаримое резюме; эта статья — справочник для platform design reviews.

Опубликовано TenthMatrix (tenthmatrix.com).


SEO-снимок этой статьи

  • SEO title: Kubeflow + Argo CD: GitOps MLOps на Kubernetes
  • Meta description: Как объединить Kubeflow Pipelines, Model Registry и KServe с Argo CD GitOps для обучаемого, аудируемого, rollback-безопасного ML на Kubernetes.
  • Primary keywords: Kubeflow Argo CD, GitOps MLOps, KServe InferenceService, Kubeflow Pipelines GitOps, ML on Kubernetes
  • Twitter / X: Kubeflow обучает. Argo CD доставляет. Модели остаются в object storage; Git хранит URI. Полный GitOps MLOps гайд от TenthMatrix.
  • LinkedIn: Мы опубликовали глубокий разбор связки Kubeflow и Argo CD: Git layout platform vs apps, гейты продвижения, canary serving, GPU-квоты и rollback через git revert. От инженерии TenthMatrix.