Работа с Helm charts
Содержание
1. Понимание Helm1.1. Ключевые возможности1.2. КаталогОпределения терминов1.3. Понимание HelmRequestОтличия HelmRequest от HelmИнтеграция HelmRequest и ApplicationРабочий процесс развертыванияОпределения компонентов2 Развертывание Helm Charts как приложений через CLI2.1 Обзор рабочего процесса2.2 Подготовка Chart2.3 Упаковка Chart2.4 Получение API токена2.5 Создание репозитория Chart2.6 Загрузка Chart2.7 Загрузка связанных образов2.8 Развертывание приложения2.9 Обновление приложения2.10 Удаление приложения2.11 Удаление репозитория Chart3. Развертывание Helm Charts как приложений через UI3.1 Обзор рабочего процесса3.2 Предварительные условия3.3 Добавление шаблонов в управляемые репозитории3.4 Удаление конкретных версий шаблоновШаги для выполнения1. Понимание Helm
Helm — это менеджер пакетов, который упрощает развертывание приложений и сервисов в кластерах Alauda Container Platform.
Helm использует формат упаковки, называемый charts. Helm chart — это набор файлов, описывающих ресурсы Kubernetes.
Создание chart в кластере порождает экземпляр chart, называемый release.
Каждый раз при создании chart, обновлении или откате release создаётся инкрементальная ревизия.
1.1. Ключевые возможности
Helm предоставляет возможность:
- Искать большое количество charts в репозиториях charts
- Модифицировать существующие charts
- Создавать собственные charts с использованием ресурсов Kubernetes
- Упаковывать приложения и делиться ими в виде charts
1.2. Каталог
Каталог построен на основе Helm и представляет собой комплексную платформу управления распространением Chart, расширяющую ограничения CLI-инструмента Helm. Платформа позволяет разработчикам удобнее управлять, развертывать и использовать charts через удобный интерфейс.
Определения терминов
1.3. Понимание HelmRequest
В Alauda Container Platform развертывания Helm в основном управляются через кастомный ресурс HelmRequest. Такой подход расширяет стандартный функционал Helm и интегрирует его в нативную модель ресурсов Kubernetes.
Отличия HelmRequest от Helm
Стандартный Helm использует CLI-команды для управления релизами, тогда как в Alauda Container Platform используются ресурсы HelmRequest для определения, развертывания и управления Helm charts. Основные отличия:
- Декларативный vs Императивный: HelmRequest обеспечивает декларативный подход к развертыванию Helm, в то время как традиционный Helm CLI — императивный.
- Нативность Kubernetes: HelmRequest — это кастомный ресурс, напрямую интегрированный с API Kubernetes.
- Непрерывная синхронизация: Captain постоянно отслеживает и синхронизирует ресурсы HelmRequest с их желаемым состоянием.
- Поддержка мультикластерности: HelmRequest поддерживает развертывания в нескольких кластерах через платформу.
- Интеграция с функциями платформы: HelmRequest может интегрироваться с другими функциями платформы, такими как ресурсы Application.
Интеграция HelmRequest и Application
Ресурсы HelmRequest и Application концептуально схожи, и пользователи могут захотеть видеть их единообразно. Платформа предоставляет механизм синхронизации HelmRequest как ресурсов Application.
Пользователи могут пометить HelmRequest для развертывания как Application, добавив следующую аннотацию:
При включении этой функции в UI платформы отображаются дополнительные поля и ссылки на соответствующую страницу Application.
Рабочий процесс развертывания
Рабочий процесс развертывания charts через HelmRequest включает:
- Пользователь создаёт или обновляет ресурс HelmRequest
- HelmRequest содержит ссылки на chart и значения для применения
- Captain обрабатывает HelmRequest и создаёт Helm Release
- Release содержит развернутые ресурсы
- Metis отслеживает HelmRequest с аннотациями приложения и синхронизирует их с Applications
- Application предоставляет единый обзор развернутых ресурсов
Определения компонентов
- HelmRequest: Определение кастомного ресурса, описывающего желаемое развертывание Helm chart
- Captain: Контроллер, обрабатывающий ресурсы HelmRequest и управляющий Helm релизами (исходный код доступен по адресу https://github.com/alauda/captain)
- Release: Развернутый экземпляр Helm chart
- Charon: Компонент, отслеживающий HelmRequest и создающий соответствующие ресурсы Application
- Application: Унифицированное представление развернутых ресурсов с дополнительными возможностями управления
- Archon-api: Компонент, отвечающий за специфические расширенные функции API внутри платформы
2 Развертывание Helm Charts как приложений через CLI
2.1 Обзор рабочего процесса
Подготовка chart → Упаковка chart → Получение API токена → Создание репозитория chart → Загрузка chart → Загрузка связанных образов → Развертывание приложения → Обновление приложения → Удаление приложения → Удаление репозитория chart
2.2 Подготовка Chart
Helm использует формат упаковки, называемый charts. Chart — это набор файлов, описывающих ресурсы Kubernetes. Один chart может использоваться для развертывания всего — от простого pod до сложного стека приложений.
См. официальную документацию: Helm Charts Documentation
Пример структуры каталога chart:
Описание ключевых файлов:
values.descriptor.yaml(опционально): Используется с ACP UI для отображения удобных формvalues.schema.json(опционально): Валидирует содержимое values.yaml и отображает простой UIvalues.yaml(обязательно): Определяет параметры развертывания chart
2.3 Упаковка Chart
Используйте команду helm package для упаковки chart:
2.4 Получение API токена
- В Alauda Container Platform нажмите на аватар в правом верхнем углу → Profile
- Нажмите Add Api Token
- Введите подходящее описание и срок действия
- Сохраните отображённый токен (показывается только один раз)
2.5 Создание репозитория Chart
Создайте локальный репозиторий chart через API:
2.6 Загрузка Chart
Загрузите упакованный chart в репозиторий:
2.7 Загрузка связанных образов
-
Скачайте образ:
docker pull nginx -
Сохраните в tar-пакет:
docker save nginx > nginx.latest.tar -
Загрузите и отправьте в приватный реестр:
2.8 Развертывание приложения
Создайте ресурс Application через API:
2.9 Обновление приложения
Обновите приложение с помощью PATCH-запроса:
2.10 Удаление приложения
Удалите ресурс Application:
2.11 Удаление репозитория Chart
3. Развертывание Helm Charts как приложений через UI
3.1 Обзор рабочего процесса
Добавление шаблонов в управляемые репозитории → Загрузка шаблонов → Управление версиями шаблонов
3.2 Предварительные условия
Репозитории шаблонов добавляются администраторами платформы. Пожалуйста, обратитесь к администратору платформы, чтобы получить имена доступных репозиториев шаблонов типа Chart или OCI Chart с правами Management.
3.3 Добавление шаблонов в управляемые репозитории
-
Перейдите в Catalog.
-
В левой навигационной панели нажмите Helm Charts.
-
Нажмите Add Template в правом верхнем углу страницы и выберите репозиторий шаблонов согласно параметрам ниже.
-
Нажмите Upload Template и загрузите локальный шаблон в репозиторий.
-
Нажмите Confirm. Процесс загрузки шаблона может занять несколько минут, пожалуйста, подождите.
Примечание: Когда статус шаблона изменится с
UploadingнаUpload Successful, это означает успешную загрузку шаблона. -
Если загрузка не удалась, устраните неполадки согласно появившимся подсказкам.
Примечание: Неправильный формат файла означает проблему с файлами в загруженном архиве, например, отсутствие содержимого или неправильное форматирование.
3.4 Удаление конкретных версий шаблонов
Если версия шаблона больше не актуальна, её можно удалить.
Шаги для выполнения
-
Перейдите в Catalog.
-
В левой навигационной панели нажмите Helm Charts.
-
Нажмите на карточку Chart для просмотра деталей.
-
Нажмите Manage Versions.
-
Найдите устаревший шаблон, нажмите Delete и подтвердите.
После удаления версии соответствующее приложение не сможет быть обновлено.