Гайды

Helm: чарты и управление релизами в Kubernetes

Структура чарта, install и upgrade, values и шаблоны, зависимости, хуки и лучшие практики секретов.

~10 мин чтения

Helm: чарты и управление релизами в Kubernetes

Helm — менеджер пакетов для Kubernetes: чарт — набор шаблонизированных YAML (Deployment, Service, ConfigMap…) + values.yaml для параметров. Один helm upgrade --install раскатывает релиз с версией и откатом. База k8s — Pods, Deployments и Services.


1. Структура чарта

text
mychart/
  Chart.yaml          # имя, версия чарта, appVersion
  values.yaml         # дефолты
  templates/          # *.yaml с Go templates
  templates/_helpers.tpl

helm create mychart — заготовка.


2. Установка и релиз

bash
helm repo add bitnami https://charts.bitnami.com/bitnami
helm search repo redis
helm install my-redis bitnami/redis -f prod-values.yaml --namespace cache --create-namespace
helm list -n cache
helm upgrade my-redis bitnami/redis -f prod-values.yaml -n cache
helm rollback my-redis 1 -n cache

Релиз — именованная установка конкретной ревизии чарта.


3. values и шаблоны

В templates/deployment.yaml:

yaml
replicas: {{ .Values.replicaCount }}
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}

Переопределение: -f, --set key=value, --set-json.


4. Зависимости чартов

Chart.yaml:

yaml
dependencies:
  - name: postgresql
    version: "15.x.x"
    repository: "https://charts.bitnami.com/bitnami"

helm dependency update — скачивает в charts/.

OCI-реестры (helm push / helm install oci://...) — хранение чартов как артефактов рядом с контейнерами в ECR, GHCR, Harbor; удобно для приватных зависимостей и воспроизводимых версий без отдельного chart museum.


5. Хуки и тесты

Hooks (pre-install, post-upgrade) — Job'ы для миграций БД (осторожно с идемпотентностью).
helm test — pod проверки после установки.


6. Лучшие практики

  • Версионируйте chart version и appVersion отдельно.
  • Не храните секреты в values в Git — Sealed Secrets, External Secrets, CI inject.
  • Используйте helm lint и helm template в CI для валидации рендера.

values.schema.json (JSON Schema для values.yaml) ловит опечатки ключей и типы до деплоя; генераторы схем из комментариев в values упрощают поддержку.


7. Чек-лист

  • Один values для dev, отдельный overlay для prod (kustomize/helmfile по вкусу).
  • Политика upgrade: atomic, timeout, wait.
  • Документируйте обязательные values в values.schema.json при необходимости.

Дальше: Ingress · GitOps с Argo CD · тег Helm