MLOps Path

3.4.2 · блок 3

Потребитель chart: install, upgrade, values overlays

Потребитель chart: install, upgrade, values overlays

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

Большинство инженеров чаще потребляют 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.

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

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

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