Показаны различия между двумя версиями страницы.
| — |
методология_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' | ||