Зачем это нужно
Большинство инженеров чаще потребляют charts, чем пишут с нуля: platform team отдаёт chart inference, вы подставляете values для своего сервиса. Умение делать values overlays (dev/staging/prod), безопасный upgrade и rollback — ежедневная работа MLE рядом с DevOps.
Неправильный merge values — классический инцидент: prod случайно получил replicaCount: 1 и logLevel: debug.
Основные идеи
Install и upgrade.
helm upgrade --install scorer platform/ml-scorer \ --namespace ml-prod \ --create-namespace \ -f values.yaml \ -f values-prod.yaml \ --set image.tag=128
upgrade --install (идемпотентно): если release нет — install, есть — upgrade.
Values overlays — порядок важен. Файлы применяются слева направо; последний побеждает:
values.yaml # defaults chart values-prod.yaml # prod overrides values-prod-gpu.yaml # optional GPU pool
Пример структуры:
`
values.yaml
replicaCount: 2 image: repository: registry.example.com/ml/scorer tag: latest resources: requests: cpu: 500m memory: 512Mi
values-prod.yaml
replicaCount: 5 image: tag: "128" # merge: только tag, repository из base autoscaling: enabled: true maxReplicas: 20 `
--set и --set-file. Разовые override в CI: --set image.tag=${GIT_COMMIT}. Файлы конфигурации: --set-file model.config=./config.json.
helm diff (plugin) / helm template. Перед prod upgrade:
helm template scorer ./chart -f values.yaml -f values-prod.yaml > /tmp/rendered.yaml
Сравнить с тем, что в кластере — меньше сюрпризов.
Rollback.
helm history scorer -n ml-prod helm rollback scorer 4 -n ml-prod
Быстрее, чем искать старый YAML, если GitOps не успел.
List и status.
helm list -n ml-prod helm status scorer -n ml-prod
Helm + Argo CD (концепция). Argo CD Application указывает на Git repo с chart и values overlays. Sync применяет helm template эквивалент в кластер. Jenkins не вызывает helm upgrade в prod напрямую — обновляет image.tag в Git, Argo CD подхватывает (GitOps). Helm CLI остаётся для локального dev и emergency rollback через Argo UI/history.
Helm + Jenkins. Jenkins stage: lint chart (helm lint), render test (helm template), опционально push chart в OCI registry; обновление values file или передача tag в downstream job.
Как это выглядит на практике
Репозиторий ml-scorer-deploy:
charts/scorer/ # chart от platform environments/ dev/values.yaml # replicaCount: 1, small resources staging/values.yaml prod/values.yaml # HPA on, network policy on
Deploy prod:
helm upgrade --install scorer charts/scorer \ -f environments/prod/values.yaml \ --namespace ml-prod
Promotion staging → prod: MR только в environments/prod/values.yaml (tag образа + конфиг), review от platform.
Values overlay для GPU:
`
values-prod-gpu.yaml
nodeSelector: accelerator: nvidia-a10 tolerations:
- key: nvidia.com/gpu operator: Exists effect: NoSchedule resources: limits: nvidia.com/gpu: 1 `
Команда: -f values-prod.yaml -f values-prod-gpu.yaml.
Что сделать после занятия
Создайте три overlay-файла (dev/staging/prod) для одного chart и покажите diff
helm templateмежду dev и prod.Выполните upgrade с новым
image.tag, затемhelm rollback— опишите, что изменилось в Pod'ах.Опишите схему «Jenkins обновляет tag → Git → Argo CD sync» своими словами.