Фото від Syed Hussaini на Unsplash
Вступ
Kubernetes справжньою революцією в оркестрації контейнерів, а Helm charts стали де-факто стандартом для керування додатками Kubernetes. Якщо ви новачок у Helm, цей посібник проведе вас через процес створення вашого власного Helm chart з нуля, і допоможе стати експертом!
Що таке Helm Chart?
Helm chart — це пакет попередньо налаштованих ресурсів Kubernetes. Він містить все необхідне для розгортання і керування додатком у Kubernetes, включаючи:
- Шаблони: YAML маніфести, що визначають ресурси Kubernetes (наприклад, Deployments, Services тощо).
- Значення: Параметри конфігурації для налаштування розгортання.
- Метадані: Файли, які описують chart, такі як його ім'я та версія.
Попередні вимоги
- Kubernetes кластер: Переконайтесь, що у вас є доступ до працюючого кластера Kubernetes.
- kubectl встановлено: Для взаємодії з вашим кластером.
- Helm встановлено: Встановіть Helm, дотримуючись офіційної інструкції.
Крок 1: Створіть Helm Chart
Почніть з створення Helm chart за допомогою команди helm create
:
helm create my-application
Це створить папку з назвою my-application
з наступною структурою:
my-application/
├── charts/
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ └── _helpers.tpl
├── values.yaml
├── Chart.yaml
└── README.md
Крок 2: Зрозумійте структуру Chart
Chart.yaml
Цей файл визначає метадані вашого chart.
apiVersion: v2
name: my-application
description: Helm chart для Kubernetes
version: 0.1.0
values.yaml
Це файл за замовчуванням для конфігурації вашого chart.
Користувачі можуть перекривати ці значення під час розгортання.
replicaCount: 2
image:
repository: nginx
tag: "1.20"
service:
type: ClusterIP
port: 80
templates/
Ця папка містить маніфести Kubernetes, що використовують шаблони Go для динамічної конфігурації.
Крок 3: Налаштуйте своє розгортання
Редагуйте файл templates/deployment.yaml
, щоб визначити ресурс Deployment для вашого додатка:
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-deployment
labels:
app: {{ .Chart.Name }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Chart.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: {{ .Values.service.port }}
Крок 4: Розгорніть свій Helm Chart
Щоб розгорнути chart у вашому кластері Kubernetes, використовуйте:
helm install my-release ./my-application
Перевірка розгортання
kubectl get pods
Перекриття значень за замовчуванням
Ви можете перекрити values.yaml
, використовуючи параметр --set
:
helm install my-release ./my-application --set replicaCount=3
Крок 5: Тестування та відлагодження
Переглянути статус релізу
helm status my-release
Сухий запуск
Використовуйте параметр --dry-run
, щоб симулювати розгортання:
helm install my-release ./my-application --dry-run
Оновлення релізу
Оновіть свій chart і застосуйте зміни:
helm upgrade my-release ./my-application
Крок 6: Пакування та поширення
Пакування chart
Щоб упакувати ваш chart у файл .tgz
:
helm package ./my-application
Хостинг вашого chart
Ви можете розмістити свій chart у репозиторії Helm, такому як GitHub Pages або Artifact Hub.
CLI команди
# Загальні команди
helm help # Показати довідку для Helm
helm version # Показати інформацію про версію Helm
# Керування chart
helm create # Створити новий Helm chart
helm lint # Запустити лінтер для перевірки chart
helm dependency update # Оновити залежності для chart
helm dependency build # Перебудувати залежності для chart
helm dependency list # Переглянути залежності chart
# Керування репозиторієм
helm repo add # Додати репозиторій Helm
helm repo list # Переглянути всі репозиторії Helm
helm repo update # Оновити репозиторії Helm
helm repo remove # Видалити репозиторій Helm
helm search hub # Шукати chart на Artifact Hub
helm search repo # Шукати chart у репозиторіях Helm
# Керування релізами
helm install # Встановити Helm chart
helm upgrade # Оновити реліз
helm rollback # Повернути реліз до попередньої версії
helm uninstall # Видалити реліз
helm list # Переглянути всі релізи Helm
helm status # Показати статус релізу
helm history # Переглянути історію релізу
# Рендеринг шаблонів
helm template [flags] # Рендерити шаблони chart локально
helm get values # Отримати значення релізу
helm get manifest # Отримати маніфест релізу
helm get notes # Отримати примітки релізу
# Відлагодження та тестування
helm test [flags] # Запустити тести для релізу
helm install --dry-run # Симулювати установку без виконання
helm upgrade --dry-run # Симулювати оновлення без виконання
helm get hooks # Отримати hooks релізу
# Пакування chart та публікація
helm package # Упакувати chart у файл .tgz
helm push # Завантажити упакований chart до репозиторію (потрібен плагін Helm)
helm show chart # Показати детальну інформацію про chart
helm show values # Показати значення за замовчуванням для chart
helm show all # Показати всю інформацію про chart
# Очистка
helm delete # Псевдонім для `uninstall`
helm repo cleanup # Видалити старі кеш-файли з репозиторіїв
# Керування плагінами
helm plugin install # Встановити плагін Helm
helm plugin list # Переглянути встановлені плагіни Helm
helm plugin update # Оновити плагін Helm
helm plugin uninstall # Видалити плагін Helm
Перекладено з: [From Zero to Hero: A Beginner’s Guide to Creating Helm Charts](https://medium.com/@reach2shristi.81/from-zero-to-hero-a-beginners-guide-to-creating-helm-charts-c17d7048ce85)