Показаны различия между двумя версиями страницы.
— |
методология_devops:использование_шаблонизатора_helm:start [2025/05/31 21:20] (текущий) kirill создано |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | # Использование шаблонизатора Helm в Kubernetes | ||
+ | ## Введение в Helm | ||
+ | |||
+ | * **Что такое Helm?** Менеджер пакетов для Kubernetes. Он позволяет определять, | ||
+ | * **Основные концепции Helm:** | ||
+ | * **Chart:** Пакет Helm. Содержит все необходимые определения ресурсов Kubernetes для запуска приложения, | ||
+ | * **Release: | ||
+ | * **Repository: | ||
+ | * **Преимущества использования Helm:** | ||
+ | * **Упрощение развертывания: | ||
+ | * **Управление конфигурацией: | ||
+ | * **Версионирование: | ||
+ | * **Сообщество и экосистема: | ||
+ | * **Повторное использование: | ||
+ | |||
+ | ## Архитектура Helm (версия 3): | ||
+ | |||
+ | * **Helm Client:** CLI-инструмент, | ||
+ | * **Kubernetes API Server:** Helm 3 непосредственно взаимодействует с API Server Kubernetes для управления ресурсами. | ||
+ | * **Удаление Tiller:** В Helm 3 компонент Tiller (ранее работавший в кластере) был удален, | ||
+ | |||
+ | ## Основные команды Helm: | ||
+ | |||
+ | * **`helm version`:** Отображает информацию о версии клиента и сервера (в Helm 3 - только клиента). | ||
+ | * **`helm repo add < | ||
+ | * **`helm repo list`:** Отображает список настроенных репозиториев. | ||
+ | * **`helm repo update`:** Загружает информацию о доступных Chart' | ||
+ | * **`helm search repo < | ||
+ | * **`helm pull < | ||
+ | * **`helm show values < | ||
+ | * **`helm show chart < | ||
+ | * **`helm create < | ||
+ | * **`helm install < | ||
+ | * Можно передавать пользовательские значения с помощью флага `-f < | ||
+ | * **`helm list [-n < | ||
+ | * **`helm status < | ||
+ | * **`helm upgrade < | ||
+ | * **`helm rollback < | ||
+ | * **`helm uninstall < | ||
+ | * **`helm history < | ||
+ | * **`helm template < | ||
+ | |||
+ | ## Структура Chart' | ||
+ | |||
+ | Типичная структура директории Chart' | ||
+ | |||
+ | my-app/ | ||
+ | ├── Chart.yaml | ||
+ | ├── values.yaml | ||
+ | ├── values.schema.json | ||
+ | ├── templates/ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | ├── charts/ | ||
+ | └── README.md | ||
+ | |||
+ | |||
+ | * **`Chart.yaml`: | ||
+ | * **`values.yaml`: | ||
+ | * **`templates/ | ||
+ | * **`charts/ | ||
+ | |||
+ | ## Использование Go Templating в Helm: | ||
+ | |||
+ | Helm использует язык шаблонов Go для динамического создания манифестов Kubernetes. В шаблонах можно использовать: | ||
+ | |||
+ | * **Переменные: | ||
+ | * **Функции: | ||
+ | * **Объекты: | ||
+ | |||
+ | **Пример шаблона `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: | ||
+ | |||
+ | В этом примере используются переменные .Release.Name, | ||
+ | Создание собственного Chart' | ||
+ | |||
+ | Создайте структуру Chart' | ||
+ | Отредактируйте Chart.yaml: Укажите имя, версию и описание вашего приложения. | ||
+ | Настройте значения по умолчанию в values.yaml: | ||
+ | Создайте шаблоны манифестов Kubernetes в директории templates/: Используйте Go template для динамического создания Deployment, Service и других необходимых ресурсов, | ||
+ | (Необязательно) Добавьте зависимости в директорию charts/ и обновите Chart.yaml. | ||
+ | (Необязательно) Напишите README.md с инструкциями по установке и настройке Chart' | ||
+ | |||
+ | Публикация Chart' | ||
+ | |||
+ | Public Repositories: | ||
+ | Private Repositories: | ||
+ | |||
+ | Лучшие практики при использовании Helm: | ||
+ | |||
+ | Держите values.yaml чистым и хорошо документированным. | ||
+ | Используйте условные операторы (if) и циклы (range) в шаблонах для большей гибкости. | ||
+ | Разбивайте сложные Chart' | ||
+ | Используйте helm template для предварительного просмотра сгенерированных манифестов перед установкой. | ||
+ | Следуйте стандартам именования ресурсов Kubernetes. | ||
+ | Управляйте секретами безопасно (например, | ||
+ | |||
+ | Заключение | ||
+ | |||
+ | Helm значительно упрощает развертывание и управление приложениями в Kubernetes. Используя Chart' |