Перейти к основному содержимому
Версия: 3.19.0

Архитектура Helm

Этот документ описывает архитектуру Helm на высоком уровне.

Назначение Helm

Helm — это инструмент для управления пакетами Kubernetes, называемыми чартами. Helm может выполнять следующие задачи:

  • Создавать новые чарты с нуля
  • Упаковывать чарты в архивные файлы (tgz)
  • Взаимодействовать с репозиториями чартов, где они хранятся
  • Устанавливать и удалять чарты в существующий кластер Kubernetes
  • Управлять жизненным циклом релизов чартов, установленных с помощью Helm

Для Helm существуют три важных концепции:

  1. Чарт — это набор информации, необходимой для создания экземпляра приложения Kubernetes.
  2. Конфигурация содержит информацию о настройках, которая может быть объединена с упакованным чартом для создания объекта, готового к релизу.
  3. Релиз — это работающий экземпляр чарта, объединённый с конкретной конфигурацией.

Компоненты

Helm — это исполняемый файл, реализованный в виде двух отдельных частей:

Клиент Helm — это клиент командной строки для конечных пользователей. Клиент отвечает за следующее:

  • Локальная разработка чартов
  • Управление репозиториями
  • Управление релизами
  • Взаимодействие с библиотекой Helm
    • Отправка чартов на установку
    • Запрос на обновление или удаление существующих релизов

Библиотека Helm предоставляет логику для выполнения всех операций Helm. Она взаимодействует с сервером API Kubernetes и обеспечивает следующие возможности:

  • Объединение чарта и конфигурации для создания релиза
  • Установка чартов в Kubernetes с предоставлением соответствующего объекта релиза
  • Обновление и удаление чартов посредством взаимодействия с Kubernetes

Автономная библиотека Helm инкапсулирует логику Helm, что позволяет использовать её различными клиентами.

Реализация

Клиент и библиотека Helm написаны на языке программирования Go.

Библиотека использует клиентскую библиотеку Kubernetes для взаимодействия с Kubernetes. В настоящее время эта библиотека использует REST+JSON. Информация хранится в объектах Secret в Kubernetes. Для работы Helm не требуется собственная база данных.

Файлы конфигурации по возможности пишутся на YAML.