MLOps Path

3.4.4 · блок 3

Качество chart и поставка: Helm, Jenkins, GitOps

Качество chart и поставка: Helm, Jenkins, GitOps

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

Chart, который «работает у автора» — не готов к prod. Нужны lint, review values, immutable tags образов, воспроизводимый путь commit → registry → Git → cluster. Этот урок связывает модули 3.2 (Jenkins), 3.3 (Kubernetes), 3.4 (Helm) и заходит на GitOps (Argo CD в модуле 3.7) — без дублирования UI Argo, но с понятной склейкой.

Capstone курса повторит: Helm + Jenkins + Argo + rollback при fire-drill.

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

Quality gates для chart.

1. helm lint — синтаксис и conventions.

2. helm template + валидация против Kubernetes schema (kubeconform, --dry-run=server в CI с доступом к cluster).

3. Policy checks (optional): не latest, limits memory заданы, probes обязательны.

4. Peer review MR в Git — diff values, не только templates.

Версионирование.

Helm + Jenkins — типовой pipeline.

| Stage | Действие |

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

| Test app | pytest (repo приложения) |

| Build | docker build & push → `IMAGE_TAG` |

| Chart lint | `helm lint deploy/chart` |

| Render | `helm template release deploy/chart -f values-ci.yaml --set image.tag=$IMAGE_TAG` |

| Publish values | commit/MR в deploy-repo: `prod/image.tag=$IMAGE_TAG` или artifact |

| *(GitOps)* | Argo CD sync (автоматически или manual approval) |

Jenkins может выполнять helm upgrade в dev namespace; для prod — только обновление Git (pull request), чтобы Argo CD был единственным deployer.

Helm + Argo CD — GitOps.

Преимущество: кластер = declared in Git; drift виден; audit trail.

Helm + Jenkins + Argo — сквозной сценарий.

1. Developer merge PR в ml-scorer (код).

2. Jenkins: test, build scorer:abc-99, push registry.

3. Jenkins job (или bot) открывает MR в ml-scorer-deploy: bump image.tag: abc-99.

4. Review + merge → Argo CD OutOfSync → Sync → rolling update в prod.

5. Инцидент → revert MR или helm rollback / Argo Rollback → tag abc-98.

Post-deploy checks. Smoke HTTP, проверка /health, canary через Istio (модуль 3.6) — chart должен поддерживать labels/version для traffic split.

Supply chain hygiene. Scan image (Trivy) в Jenkins; pin base image digest в values; sign artifacts — advanced, но знайте направление.

Documentation. README chart: обязательные values, пример install, таблица environments overlays.

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

Структура двух репозиториев (частый паттерн):


ml-scorer/              # код + Dockerfile + Jenkinsfile
ml-scorer-deploy/       # charts/scorer + environments/*/values.yaml

values overlays:


environments/dev/values.yaml      # replicaCount: 1
environments/staging/values.yaml  # integration tests
environments/prod/values.yaml     # autoscaling, prod tags

Jenkinsfile (deploy repo) или multibranch на app repo с shared library — lint chart на каждый MR.

Fire-drill (учебный):

1. Выкатить заведомо broken tag (fail readiness).

2. Argo/Helm rollback.

3. Postmortem: какой stage pipeline не поймал ошибку.

Практикум модуля: свой chart для inference + upgrade/rollback; опишите, куда встанет Argo CD в следующем модуле.

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

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

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