Содержание

Использование шаблонизатора Helm в Kubernetes

Введение в Helm

Архитектура Helm (версия 3):

Основные команды Helm:

Структура 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'а

Использование 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: {{ .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.

DokuWiki Appliance - Powered by TurnKey Linux