28 - Что такое Helm. Практический выпуск. Kubernetes

YOUTUBE · 28.11.2025 06:09

Ключевые темы и таймкоды

Введение в Helm

0:00
  • Helm - это пакетный менеджер для Kubernetes, позволяющий устанавливать и управлять приложениями.
  • Он аналогичен диспетчерам пакетов в Linux, таким как APT или YUM.
  • Helm позволяет устанавливать приложения в Kubernetes кластеры с помощью одной команды.
  • Цель урока - познакомиться с Helm, понять его работу, создание и установку пакетов, а также обновление.

Установка Helm

0:57
  • Для работы с Helm необходимо установить Helm Lite.
  • Ссылка на установку доступна в описании.
  • Рекомендуется использовать третью версию Helm, так как вторая версия устарела.
  • После установки проверьте версию Helm с помощью команды `helm version`.

Установка и настройка Minikube

1:28
  • Установка Minikube для локального кластера.
  • Переход в Lans и проверка состояния кластера.
  • Создание чарта с помощью команды helm create.

Структура чарта Helm

2:25
  • Обзор структуры чарта: название, тип, версия, лицензия.
  • Файл readme с дефолтной конфигурацией.
  • Папка charts для зависимостей.

Ресурсы и шаблоны

3:15
  • Папка resources для ресурсов, которые будут задиплоены.
  • Папка templates для шаблонов, используемых для динамического создания объектов.
  • Файл helper для определения дефолтных параметров.

Установка и использование чарта

7:07
  • Команда helm install для установки чарта.
  • Проверка статуса установки и описание приложения.
  • Использование переменных окружения для взаимодействия с приложением.

Управление селекторами

10:00
  • Использование хелпер-шаблонов для управления селекторами.
  • Определение селекторов для сервисов.
  • Вывод значений всех релизов и пакетов в кластере.

Обновление приложения с помощью Helm

10:55
  • Использование команды helm status для проверки статуса приложения.
  • Определение нового имиджа с помощью helm upgrade.
  • Указание имени релиза и использование локального чарта.

Использование команды dryrun

11:54
  • Команда dryrun позволяет имитировать обновление без фактической установки.
  • Проверка возможности обновления и рендеринг файлов.
  • Использование флага debug для вывода дополнительных логов.

Рендеринг файлов и управление лейблами

12:54
  • Рендеринг файлов в формате YAML для дальнейшего использования.
  • Управление лейблами для объектов с помощью селекторов.
  • Динамическое указание портов через файл.

Эксперимент с репликами

14:43
  • Изменение количества реплик с помощью команды dryrun.
  • Проверка успешности обновления без использования dryrun.
  • Использование dryrun для проверки установки чарта.

Включение горизонтального автоскеллинга

16:39
  • Включение горизонтального автоскеллинга для управления количеством подов.
  • Рендеринг файлов с учетом автоскеллинга.
  • Использование команды wait для ожидания готовности подов.

Управление минимальным количеством реплик

18:42
  • Изменение минимального количества реплик через файл.
  • Использование различных файлов для разных окружений.
  • Проверка успешности обновления и создание новых ревизий.

Обновление релиза с использованием флага set

20:04
  • Апгрейдим релиз приложения демо-ап, используя тот же чарт.
  • Устанавливаем флаг set с несуществующим имиджем для вызова ошибки.
  • Проверяем файл в дрейеране для проверки изменений.

Ролбек при неудачном обновлении

21:03
  • Приложение не обновилось успешно, поэтому делаем ролбек.
  • Откатываемся на предыдущую успешную ревизию.
  • Обратим внимание, что добавлена новая ревизия.

Автоматический ролбек при неудаче

22:03
  • Добавляем флаг tomik для автоматического ролбека при неудаче.
  • Устанавливаем тайм-аут на 20 секунд.
  • При неудаче происходит автоматический ролбек.

Деплой приложения в другой namespace

23:46
  • Создаем отдельный файл для деф. окружения.
  • Выполняем апгрейд и стол для установки или обновления приложения.
  • Используем файл для переопределения значений по умолчанию.

Создание namespace для деплоя

24:38
  • Создаем namespace для деплоя с помощью стел или ямал.
  • Используем флаг к нам спейс для автоматического создания namespace.
  • Демонстрируем использование команды хелм темплейт для рендеринга манифестов.

Различия между хелм темплейт и хелм апгрейд

25:38
  • Хелм темплейт рендерит манифесты локально, не отправляя запросы в Kubernetes.
  • Хелм апгрейд отправляет запросы в Kubernetes для проверки установки ресурсов.
  • Хелм темплейт не выдает ошибок при установке кастомных ресурс дефинишинов.

Создание нового приложения в Helm

27:37
  • Создание нового приложения в другом пространстве имен с флагом --kit-namespace.
  • Проверка установки приложения с помощью команды helm history.
  • Использование команды helm lint для проверки чарта на наличие ошибок.

Упаковка чарта в архив

28:31
  • Использование команды helm pack для упаковки чарта в архив.
  • Создание архива с названием чарта и его версией.
  • Возможность указания кастомного файла при установке чарта.

Установка приложения из архива

29:03
  • Установка приложения из архива вместо директории.
  • Отправка архива в репозиторий для установки.
  • Хранение информации о ревизиях в секретах Helm.

Извлечение значений из секретов

30:03
  • Извлечение значения секрета релиза с помощью команды helm secret.
  • Сравнение значений из секретов с файлами в директории.
  • Использование значений секретов для деплоя файлов.

Удаление приложения

31:50
  • Удаление приложения с помощью команд helm uninstall и helm uninstall --namespace.
  • Добавление внешних репозиториев для установки чартов.
  • Пример добавления репозитория для установки Prometheus.

Проверка наличия чарта в репозитории

32:58
  • Проверка наличия чарта в репозитории с помощью команды helm search repo.
  • Получение архива чарта и его содержимого.
  • Обзор содержимого чарта и его файлов.