helm version
: Отображает информацию о версии клиента и сервера (в Helm 3 - только клиента).helm repo add <NAME> <URL>
: Добавляет новый репозиторий Chart'ов.helm repo list
: Отображает список настроенных репозиториев.helm repo update
: Загружает информацию о доступных Chart'ах из настроенных репозиториев.helm search repo <KEYWORD>
: Поиск Chart'ов в настроенных репозиториях.helm pull <REPO_NAME>/<CHART_NAME>
: Скачивает Chart из репозитория.helm show values <REPO_NAME>/<CHART_NAME>
: Отображает значения по умолчанию для Chart'а.helm show chart <REPO_NAME>/<CHART_NAME>
: Отображает информацию о Chart'е.helm create <CHART_NAME>
: Создает новый шаблон Chart'а.helm install <RELEASE_NAME> <CHART>
: Устанавливает Chart в кластер, создавая новый Release.-f <VALUES_FILE>
или --set <KEY=VALUE>
.helm list [-n <NAMESPACE>]
: Отображает список установленных релизов в указанном (или во всех) namespace.helm status <RELEASE_NAME> [-n <NAMESPACE>]
: Отображает статус указанного релиза.helm upgrade <RELEASE_NAME> <CHART> [-f <VALUES_FILE>] [--set <KEY=VALUE>] [-n <NAMESPACE>]
: Обновляет существующий релиз.helm rollback <RELEASE_NAME> <REVISION> [-n <NAMESPACE>]
: Откатывает релиз к указанной ревизии.helm uninstall <RELEASE_NAME> [-n <NAMESPACE>]
: Удаляет релиз из кластера.helm history <RELEASE_NAME> [-n <NAMESPACE>]
: Отображает историю релизов.helm template <RELEASE_NAME> <CHART> [-f <VALUES_FILE>] [--set <KEY=VALUE>] [--namespace <NAMESPACE>]
: Рендерит шаблоны Chart'а локально без установки в кластер. Полезно для предварительного просмотра.Типичная структура директории Chart'а выглядит следующим образом:
my-app/ ├── Chart.yaml # Информация о Chart'е ├── values.yaml # Значения по умолчанию для шаблонов ├── values.schema.json # (Необязательно) Схема для values.yaml ├── templates/ # Каталог с шаблонами манифестов Kubernetes │ ├── deployment.yaml │ ├── service.yaml │ └── … ├── charts/ # Каталог с зависимыми Chart'ами (subcharts) └── README.md # (Необязательно) Описание Chart'а
Chart.yaml
: Содержит метаданные о Chart'е, такие как имя, версия, описание и зависимости.values.yaml
: Файл, содержащий значения по умолчанию, которые используются при рендеринге шаблонов. Эти значения могут быть переопределены при установке или обновлении релиза.templates/
: Директория, содержащая шаблоны манифестов Kubernetes в формате Go template. Helm обрабатывает эти шаблоны, подставляя значения из values.yaml
(и переданные пользователем), чтобы создать финальные YAML-файлы ресурсов Kubernetes.charts/
: Директория, содержащая другие Chart'ы, от которых зависит данный Chart (subcharts). Helm управляет установкой и обновлением этих зависимостей.Helm использует язык шаблонов Go для динамического создания манифестов Kubernetes. В шаблонах можно использовать:
values.yaml
(например, .Values.replicaCount
).include
, lookup
) и функции Go template (например, if
, range
, sprig
)..Release
, .Chart
, .Capabilities
).
Пример шаблона deployment.yaml
:
```yaml apiVersion: apps/v1 kind: Deployment metadata:
name: {{ .Release.Name }}-deployment labels: app: {{ .Chart.Name }} release: {{ .Release.Name }}
spec:
replicas: {{ .Values.replicaCount }} selector: matchLabels: app: {{ .Chart.Name }} release: {{ .Release.Name }} template: metadata: labels: app: {{ .Chart.Name }} release: {{ .Release.Name }} spec: containers: - name: {{ .Chart.Name }}-container image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" ports: - containerPort: {{ .Values.service.port }}
В этом примере используются переменные .Release.Name, .Chart.Name и значения из values.yaml (.Values.replicaCount, .Values.image.repository, .Values.image.tag, .Values.service.port). Создание собственного Chart'а:
Создайте структуру Chart'а: helm create my-app Отредактируйте Chart.yaml: Укажите имя, версию и описание вашего приложения. Настройте значения по умолчанию в values.yaml: Определите параметры, которые пользователи смогут настраивать. Создайте шаблоны манифестов Kubernetes в директории templates/: Используйте Go template для динамического создания Deployment, Service и других необходимых ресурсов, используя значения из values.yaml. (Необязательно) Добавьте зависимости в директорию charts/ и обновите Chart.yaml. (Необязательно) Напишите README.md с инструкциями по установке и настройке Chart'а.
Публикация Chart'ов:
Public Repositories: Helm Hub (artifacthub.io) является центральным местом для поиска публичных Chart'ов. Private Repositories: Можно использовать различные решения для создания приватных репозиториев Chart'ов (например, OCI registries, ChartMuseum, Nexus).
Лучшие практики при использовании Helm:
Держите values.yaml чистым и хорошо документированным. Используйте условные операторы (if) и циклы (range) в шаблонах для большей гибкости. Разбивайте сложные Chart'ы на более мелкие subcharts, если это имеет смысл. Используйте helm template для предварительного просмотра сгенерированных манифестов перед установкой. Следуйте стандартам именования ресурсов Kubernetes. Управляйте секретами безопасно (например, с помощью Secrets Kubernetes или внешних менеджеров секретов).
Заключение
Helm значительно упрощает развертывание и управление приложениями в Kubernetes. Используя Chart'ы, вы можете упаковать все необходимые ресурсы, настраивать их с помощью значений и легко обновлять и откатывать релизы. Понимание основных концепций и команд Helm является важным навыком для работы с Kubernetes.