Helm
Helm — это менеджер пакетов для Kubernetes, который упрощает развертывание и управление приложениями в кластере Kubernetes. Helm называют "apt/yum для Kubernetes" благодаря его способности управлять сложными приложениями.
Основные компоненты Helm
- Chart — пакет Kubernetes ресурсов
- Release — экземпляр Chart'а в кластере
- Repository — хранилище Chart'ов
- Values — конфигурационные параметры
Структура Helm Chart
Основные команды Helm
1# Установка Chart'а
2helm install my-release ./mychart
3
4# Обновление Release
5helm upgrade my-release ./mychart
6
7# Просмотр установленных Release'ов
8helm list
9
10# Удаление Release
11helm uninstall my-release
12
13# Создание нового Chart'а
14helm create mychart
15
16# Проверка шаблонов
17helm template my-release ./mychart
18
19# Добавление репозитория
20helm repo add bitnami https://charts.bitnami.com/bitnami
Шаблонизация в Helm
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: {{ include "mychart.fullname" . }}
5 labels:
6 {{- include "mychart.labels" . | nindent 4 }}
7spec:
8 replicas: {{ .Values.replicaCount }}
9 selector:
10 matchLabels:
11 {{- include "mychart.selectorLabels" . | nindent 6 }}
12 template:
13 metadata:
14 labels:
15 {{- include "mychart.selectorLabels" . | nindent 8 }}
16 spec:
17 containers:
18 - name: {{ .Chart.Name }}
19 image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
20 ports:
21 - name: http
22 containerPort: {{ .Values.service.port }}
Файл values.yaml
1# Default values for mychart
2replicaCount: 1
3
4image:
5 repository: nginx
6 pullPolicy: IfNotPresent
7 tag: ""
8
9service:
10 type: ClusterIP
11 port: 80
12
13ingress:
14 enabled: false
15 className: ""
16 annotations: {}
17 hosts:
18 - host: chart-example.local
19 paths:
20 - path: /
21 pathType: Prefix
Преимущества Helm
- Упрощение развертывания сложных приложений
- Управление зависимостями
- Версионирование релизов
- Откат к предыдущим версиям
- Переиспользование Chart'ов
Установка Helm
Best Practices для Helm
- Используй семантическое версионирование для Chart'ов
- Документируй все параметры values.yaml
- Тестируй Chart'ы перед публикацией
- Используй helm lint для проверки
- Храни Chart'ы в Git репозиториях
FAQ
Нужен ли Helm для простых приложений?
Для очень простых приложений можно обойтись kubectl, но Helm облегчает управление конфигурацией и обновлениями.
Как обновить приложение через Helm?
Используй команду helm upgrade с новыми values или новой версией Chart'а. Helm сохранит историю для возможности отката.