Перейти до основного вмісту
Версія: 4.0.0

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

Цей документ описує загальну архітектуру Helm.

Призначення Helm

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

  • Створювати нові чарти з нуля
  • Пакувати чарти в файли архіву чартів (tgz)
  • Взаємодіяти з репозиторіями чартів, де зберігаються чарти
  • Встановлювати та видаляти чарти в наявному кластері Kubernetes
  • Керувати циклом релізів чартів, які були встановлені за допомогою Helm

В Helm є три важливі концепції:

  1. Chart — це пакет інформації, необхідної для створення екземпляра застосунку Kubernetes.
  2. Config — містить конфігураційну інформацію, яку можна обʼєднати з упакованим чартом для створення обʼєкта, що підлягає випуску.
  3. Release — це запущений екземпляр чарту, поєднаний з конкретним конфігом.

Компоненти

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

Клієнт Helm — це клієнт командного рядка для кінцевих користувачів. Клієнт відповідає за наступне:

  • Розробка локальних чартів
  • Управління репозиторіями
  • Управління релізами
  • Взаємодія з бібліотекою Helm
    • Надсилання чартів для встановлення
    • Запит на оновлення або видалення наявних релізів

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

  • Обʼєднання чартів і конфігурацій для створення релізу
  • Встановлення чартів у Kubernetes і надання подальшого обʼєкта релізу
  • Оновлення та видалення чартів шляхом взаємодії з Kubernetes

Окрема бібліотека Helm інкапсулює логіку Helm, щоб її можна було використовувати різними клієнтами.

Реалізація

Клієнт та бібліотека Helm написані мовою програмування Go.

Бібліотека використовує клієнтську бібліотеку Kubernetes для комунікації з Kubernetes. Зараз ця бібліотека використовує REST+JSON. Інформація зберігається у Secrets, розташованих всередині Kubernetes. Вона не потребує власної бази даних.

Конфігураційні файли, коли це можливо, написані у YAML.