Helm: пакетный менеджер
Когда манифестов десятки, копировать их под каждое окружение мучительно — Helm упаковывает их в переиспользуемые чарты.
Helm — пакетный менеджер для Kubernetes. Он упаковывает набор манифестов в чарт (chart) с параметрами, который ставится одной командой.
Реальное приложение — это десятки манифестов: Deployment-ы, Service-ы, ConfigMap-ы, Ingress. Для dev и prod они почти одинаковые, отличаются лишь значениями (число реплик, образ, домен). Helm решает это шаблонами: один набор манифестов с подстановкой переменных.
Чарт и values
Чарт — это каталог с шаблонами манифестов и файлом values.yaml, где лежат значения по умолчанию. В шаблонах вместо конкретных чисел стоят плейсхолдеры:
# values.yaml — параметры чарта
replicaCount: 3
image:
repository: my-app
tag: "1.0"
service:
port: 80А шаблон Deployment подставляет их (синтаксис Go-шаблонов):
spec:
replicas: {{ .Values.replicaCount }}
template:
spec:
containers:
- name: app
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"Для prod достаточно переопределить значения, не трогая шаблоны.
Установка готовых приложений
Главная сила Helm — готовые чарты популярных приложений (Postgres, Redis, nginx-ingress). Вместо написания манифестов с нуля ставите проверенный чарт:
# подключаем репозиторий чартов
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# ставим PostgreSQL одной командой
helm install my-db bitnami/postgresqlHelm развернёт все нужные объекты. Переопределить значения можно на лету:
helm install my-db bitnami/postgresql \
--set auth.password=s3cr3t \
--set primary.persistence.size=10GiРелизы, обновления, откаты
Установленный чарт — это релиз. Helm ведёт их историю и умеет обновлять и откатывать целиком:
helm list
helm upgrade my-db bitnami/postgresql --set image.tag=16
helm rollback my-db 1
helm uninstall my-db| Команда | Действие |
helm install | установить чарт как релиз |
helm upgrade | обновить релиз |
helm rollback | откатить релиз |
helm uninstall | удалить релиз целиком |
Итог
- Helm упаковывает манифесты в параметризуемый чарт.
- values отделяют значения от шаблонов — один чарт на все окружения.
- Готовые чарты ставят сложные приложения одной командой install.