Зачем это нужно
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.
helm lint— синтаксис и conventions.helm template+ валидация против Kubernetes schema (kubeconform,--dry-run=serverв CI с доступом к cluster).Policy checks (optional): не
latest, limits memory заданы, probes обязательны.Peer review MR в Git — diff values, не только templates.
Версионирование.
Image tag — из Jenkins:
gitSha-buildNumber, не mutablelatestв prod.Chart version — semver при изменении templates.
Release revision — Helm history в кластере; Git commit — source of truth при GitOps.
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.
Git repo
ml-scorer-deploy: chart +environments/prod/values.yaml.Argo CD Application указывает
path: charts/scorer,helm.valueFiles: [../../environments/prod/values.yaml].Sync diff visible в UI; rollback = revert Git commit или Argo history → Helm rollback.
Values overlays в Argo: несколько
valueFilesили parameters — тот же порядок merge, что в CLI.
Преимущество: кластер = declared in Git; drift виден; audit trail.
Helm + Jenkins + Argo — сквозной сценарий.
Developer merge PR в
ml-scorer(код).Jenkins: test, build
scorer:abc-99, push registry.Jenkins job (или bot) открывает MR в
ml-scorer-deploy: bumpimage.tag: abc-99.Review + merge → Argo CD OutOfSync → Sync → rolling update в prod.
Инцидент → revert MR или
helm rollback/ Argo Rollback → tagabc-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 (учебный):
Выкатить заведомо broken tag (fail readiness).
Argo/Helm rollback.
Postmortem: какой stage pipeline не поймал ошибку.
Практикум модуля: свой chart для inference + upgrade/rollback; опишите, куда встанет Argo CD в следующем модуле.
Что сделать после занятия
Добавьте stage
helm lintв Jenkinsfile (app или deploy repo).Подготовьте три values overlays и таблицу отличий dev/staging/prod.
Нарисуйте sequence diagram: developer → Jenkins → registry → Git → Helm/Argo → Pod.