03 · Платформа: DevOps, k8s, сеть, хранилище3.4 · Helm-чарты3.4.2средний

Потребитель 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» своими словами.

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