3.4.1 · блок 3
Зачем Helm: chart, release, values
Зачем Helm: chart, release, values
Зачем это нужно
Deployment + Service + ConfigMap + HPA + NetworkPolicy — десятки YAML-файлов. Для dev нужно 2 реплики, для prod — 10, другой образ, другие лимиты памяти. Копировать папку manifests/ и править руками — ошибки и drift. Helm — менеджер пакетов для Kubernetes: один chart (шаблоны) + values (параметры окружения) = release (установленный экземпляр в кластере).
В курсе Helm — мост между Jenkins (образ собран) и GitOps (Argo CD синхронизирует desired state). Понимание chart/release/values обязательно для capstone и корпоративного MDP.
Основные идеи
Chart. Директория с Chart.yaml, values.yaml, папкой templates/ (Go templates). Описывает приложение целиком: Deployment, Service, Ingress, ServiceAccount, HPA.
Release. Именованная установка chart в namespace: helm install scorer ./scorer-chart -n ml-prod. Одна chart — много releases (scorer-dev, scorer-prod).
Values. Параметры по умолчанию в values.yaml; переопределение:
helm install scorer ./chart -f values-prod.yaml --set image.tag=128
Шаблонизация. В templates/deployment.yaml:
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
replicas: {{ .Values.replicaCount }}
Helm рендерит YAML → helm template для preview без apply.
Revision history. Каждый helm upgrade — новая revision. helm rollback scorer 3 — откат (дублирует идею kubectl rollout undo, но для всего chart).
Helm 3. Release metadata в Secret в namespace (не Tiller как в Helm 2). CLI: install, upgrade, uninstall, list, history.
Зачем не голый kubectl kustomize? Оба решают параметризацию. Helm силён в пакетировании, версионировании chart, dependency (Chart.yaml dependencies), registry chart (OCI), экосистеме готовых charts. В курсе — Helm как стандарт MDP.
Связь с ML. Values хранят: image.tag из Jenkins, model.s3Uri, resources.limits.memory, autoscaling.maxReplicas. DS не редактирует templates — только согласованные values через MR.
Как это выглядит на практике
Поток:
1. Jenkins push registry/ml/scorer:128.
2. MR в Git repo helm-scorer: values-prod.yaml → image.tag: "128".
3. helm upgrade --install scorer ./charts/scorer -f values-prod.yaml -n ml-prod.
4. Или Argo CD Application следит за этим repo и sync автоматически.
Локальная проверка:
helm template scorer ./charts/scorer -f values-dev.yaml | kubectl apply -f -
helm lint ./charts/scorer
Chart vs release: chart — «рецепт пирога» в Git; release — «пирог на столе» в кластере с именем scorer.
Что сделать после занятия
- [ ] Установите Helm CLI и выполните
helm version. - [ ] Разверните официальный demo chart (например, из docs) в учебный namespace и удалите
helm uninstall. - [ ] Объясните разницу chart / release / values на примере своего inference-сервиса.