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.
Что сделать после занятия
- [ ] Создайте три overlay-файла (dev/staging/prod) для одного chart и покажите diff
helm templateмежду dev и prod. - [ ] Выполните upgrade с новым
image.tag, затемhelm rollback— опишите, что изменилось в Pod'ах. - [ ] Опишите схему «Jenkins обновляет tag → Git → Argo CD sync» своими словами.