hostprofi.ru
Подобрать хостинг
Термин·буква H

Helm

краткое определение

Helm — менеджер пакетов для Kubernetes. Позволяет устанавливать, обновлять и удалять комплексные приложения (Charts) в Kubernetes-кластере как единый пакет.

Helm — менеджер пакетов для Kubernetes. Пакет в Helm называется chart — набор YAML-шаблонов, описывающих все ресурсы приложения (Deployment, Service, ConfigMap, Ingress и т.д.). Helm позволяет устанавливать сложные приложения в Kubernetes одной командой, управлять версиями и выполнять rollback.

Основные концепции

  • Chart: пакет с шаблонами и values по умолчанию
  • Release: установленный экземпляр chart в кластере. Один chart можно установить несколько раз под разными именами (например, staging и production)
  • Repository: хранилище charts. Официальный: Artifact Hub (artifacthub.io)
  • Values: параметры для шаблонизации; переопределяются при установке через --set или -f values.yaml

Основные команды

# Добавить репозиторий
helm repo add bitnami https://charts.bitnami.com/bitnami

# Поиск chart
helm search repo nginx

# Установить chart
helm install my-nginx bitnami/nginx --namespace default

# Установить с кастомными values
helm install my-nginx bitnami/nginx -f custom-values.yaml

# Обновить release
helm upgrade my-nginx bitnami/nginx

# Откатиться к предыдущей версии
helm rollback my-nginx 1

# Список releases
helm list -A

# Удалить release
helm uninstall my-nginx

История

Helm основан компанией Deis в 2015 году как инструмент для упрощения деплоя в Kubernetes. В 2016 году передан в CNCF (Cloud Native Computing Foundation). Helm 2 требовал server-side компонент Tiller (с правами cluster-admin) — критиковался за проблемы безопасности. Helm 3 (ноябрь 2019) убрал Tiller: всё клиентское, состояние хранится в Secret Kubernetes. Helm 3 — текущий стандарт; более 10 000 charts на Artifact Hub (2024).

Структура chart

mychart/
├── Chart.yaml          # метаданные chart
├── values.yaml         # значения по умолчанию
├── charts/             # зависимые charts
└── templates/          # YAML-шаблоны ресурсов K8s
    ├── deployment.yaml
    ├── service.yaml
    └── ingress.yaml

На что обращать внимание

Helm использует Go-шаблоны — синтаксис {{ .Values.image.tag }} может быть непривычен поначалу. При обновлении chart всегда делай helm diff upgrade (плагин helm-diff) для просмотра изменений перед применением. Secrets в Helm хранятся в Kubernetes Secret как base64 — не шифруются. Для зашифрованных секретов используй helm-secrets (SOPS + Age). Popular charts: cert-manager (SSL), Traefik, nginx-ingress, Prometheus/Grafana stack (kube-prometheus-stack).

История Helm

Helm создан командой Deis (ныне поглощена Microsoft) в 2015 году. Версия 1.0 выпущена как «Kubernetes package manager» на KubeCon 2015. Helm 2 (2016) ввёл серверный компонент Tiller — pod в кластере, управляющий установками. Tiller стал источником проблем безопасности (имел cluster-admin права). Helm 3 (2019) убрал Tiller — все операции выполняются через kubectl credentials клиента. Helm 3.x — текущий стандарт; Helm 2 достиг EOL в ноябре 2020. Крупнейшие репозитории чартов: Artifact Hub (artifacthub.io), Bitnami Charts.

Структура Helm chart

mychart/
  Chart.yaml          # Метаданные (name, version, appVersion)
  values.yaml         # Значения по умолчанию
  templates/
    deployment.yaml   # Kubernetes YAML с шаблонами
    service.yaml
    ingress.yaml
    _helpers.tpl      # Вспомогательные функции

Шаблоны используют Go template engine: {{ .Values.image.tag }}, {{ include "mychart.name" . }}.

На что обращать внимание

Helm values.yaml хранит конфигурацию, которая переопределяется при установке: helm install myapp ./chart -f prod-values.yaml. Секреты не хранить в values.yaml открытым текстом — используй Kubernetes Secrets + helm-secrets (SOPS + Age для шифрования). Для обновления без downtime: helm upgrade myapp ./chart --atomic (откат при ошибке). Популярные чарты: cert-manager (SSL), Traefik, nginx-ingress, Prometheus + Grafana (kube-prometheus-stack).

Другие термины