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

Зачем 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.yamlimage.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-сервиса.

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