Архітектура Helm
Цей документ описує загальну архітектуру Helm.
Призначення Helm
Helm — є інструментом для управління пакетами Kubernetes, які називаються чарти. Helm може виконувати такі дії:
- Створювати нові чарти з нуля
- Пакувати чарти в файли архіву чартів (tgz)
- Взаємодіяти з репозиторіями чартів, де зберігаються чарти
- Встановлювати та видаляти чарти в наявному кластері Kubernetes
- Керувати циклом релізів чартів, які були встановлені за допомогою Helm
В Helm є три важливі концепції:
- Chart — це пакет інформації, необхідної для створення екземпляра застосунку Kubernetes.
- Config — містить конфігураційну інформацію, яку можна обʼєднати з упакованим чартом для створення обʼєкта, що підлягає випуску.
- Release — це запущений екземпляр чарту, поєднаний з конкретним конфігом.
Компоненти
Helm — це виконуваний файл, який складається з двох окремих частин:
Клієнт Helm — це клієнт командного рядка для кінцевих користувачів. Клієнт відповідає за наступне:
- Розробка локальних чартів
- Управління репозиторіями
- Управління релізами
- Взаємодія з бібліотекою Helm
- Надсилання чартів для встановлення
- Запит на оновлення або видалення наявних релізів
Бібліотека Helm забезпечує логіку виконання всіх операцій Helm. Вона взаємодіє з сервером API Kubernetes і надає такі можливості:
- Обʼєднання чартів і конфігурацій для створення релізу
- Встановлення чартів у Kubernetes і надання подальшого обʼєкта релізу
- Оновлення та видалення чартів шляхом взаємодії з Kubernetes
Окрема бібліотека Helm інкапсулює логіку Helm, щоб її можна було використовувати різними клієнтами.
Реалізація
Клієнт та бібліотека Helm написані мовою програмування Go.
Бібліотека використовує клієнтську бібліотеку Kubernetes для комунікації з Kubernetes. Зараз ця бібліотека використовує REST+JSON. Інформація зберігається у Secrets, розташованих всередині Kubernetes. Вона не потребує власної бази даних.
Конфігураційні файли, коли це можливо, написані у YAML.