Вступ до Helm
Helm — це менеджер пакунків для Kubernetes. Він допомагає визначати, встановлювати й оновлювати застосунки в кластері Kubernetes — від одного контейнера до застосунку з багатьма взаємозалежними частинами.
Розгортання застосунку в Kubernetes означає написання та супровід багатьох маніфестів: Deployment, Service, ConfigMap тощо. Керувати цими файлами вручну в різних середовищах і версіях — одноманітна робота, під час якої легко припуститися помилки. Helm обʼєднує повʼязані маніфести в одну одиницю, що називається чартом. Чарт можна версіонувати, поширювати, встановлювати й відкочувати як один реліз. Завдяки цьому застосунком можна керувати так само, як системний менеджер пакунків (Homebrew, apt або yum) керує програмним забезпеченням операційної системи.
Що вміє Helm?
За допомогою Helm можна:
- Встановлювати застосунки й керувати ними. Розгортати готові застосунки, наприклад бази даних, стеки моніторингу й контролери Ingress, з чарта замість того, щоб самостійно збирати маніфести.
- Пакувати й поширювати власні застосунки. Обʼєднувати ресурси Kubernetes у чарт, версіонувати його та поширювати серед команди або спільноти.
- Налаштовувати застосунки для різних середовищ. Передавати різні значення тому самому чарту, щоб розгортати його в середовищах розробки, тестування та промислової експлуатації без дублювання маніфестів.
- Безпечно оновлювати й відкочувати зміни. Оновлювати реліз до нової версії та повертатися до попередньої редакції, якщо оновлення пройшло не за планом.
- Керувати залежностями. Оголошувати інші чарти, потрібні застосунку, і доручати Helm встановлювати їх разом.
Для кого призначений Helm?
Користувач Helm зазвичай виконує одну з кількох ролей. Одна людина може виконувати кілька ролей, а їх розподіл між людьми відрізняється в різних організаціях. Докладніше див. у розділі Профілі користувачів документації спільноти Helm.
- Оператор застосунків. Ви запускаєте застосунок у кластері Kubernetes, наприклад підтримуєте роботу WordPress і його бази даних MySQL. Ця роль відрізняється від ролі оператора кластера, який забезпечує роботу самого кластера.
- Постачальник застосунків. Ви пакуєте застосунок, щоб ним міг керувати хтось інший, як це роблять супровідники чартів спільноти.
- Розробник застосунків. Ви пишете програмне забезпечення для застосунку й зазвичай не переймаєтеся тим, де саме він працює.
- Розробник допоміжних інструментів. Ви створюєте інструменти, які працюють разом із Helm, наприклад лінтер або втулок Helm.
Helm зосереджується на застосунку, що працює в кластері, а не на самому кластері. Створення й експлуатація кластера Kubernetes, зокрема його панелі управління та вузлів, — це робота оператора кластера, яка не належить до сфери відповідальності Helm.
Основні компоненти
Роботу Helm описують три компоненти: чарти, репозиторії та релізи. Helm встановлює чарти в Kubernetes, створюючи окремий реліз для кожного встановлення. Нові чарти можна знаходити за допомогою пошуку в репозиторіях чартів Helm.
Чарт
Чарт — це пакунок Helm. Він містить усі визначення ресурсів, потрібні для запуску застосунку, інструмента або служби в кластері Kubernetes. Уявіть його як еквівалент формули Homebrew, пакунка dpkg для apt або файла RPM для yum у світі Kubernetes. Інструкції зі створення чарта див. у посібнику чартів.
Репозиторій
Репозиторій — це місце, де збирають і поширюють чарти. Він працює як архів CPAN мови Perl або база пакунків Fedora, але для пакунків Kubernetes. Загальнодоступні чарти можна знайти на Artifact Hub, де зібрано чарти з багатьох репозиторіїв. Докладніше про розміщення чартів див. у посібнику з репозиторіїв чартів.
Реліз
Реліз — це екземпляр чарта, що працює в кластері Kubernetes. В один кластер можна встановити той самий чарт кілька разів, і кожне встановлення створить новий реліз із власною назвою. Наприклад, якщо потрібно запустити в кластері дві бази даних, можна двічі встановити чарт MySQL; кожне встановлення обліковуватиметься як окремий реліз.
Щоб створити реліз, Helm обʼєднує запакований чарт із даними конфігурації. Конфігурація — це набір значень, зазвичай із файла values.yaml.
Архітектура
Helm — це інструмент командного рядка, який працює на вашому локальному компʼютері та взаємодіє з сервером API Kubernetes.
Helm складається з двох окремих частин:
- Клієнт Helm — це інструмент командного рядка для кінцевих користувачів. Він забезпечує локальну розробку чартів, керує репозиторіями й релізами, а також передає чарти бібліотеці Helm для встановлення, оновлення або видалення.
- Бібліотека Helm містить логіку виконання операцій Helm. Вона створює релізи, встановлює, оновлює й видаляє чарти, взаємодіючи із сервером API Kubernetes. Оскільки бібліотека є незалежним компонентом, ту саму логіку можуть повторно використовувати інші клієнти.
Клієнт і бібліотека Helm написані мовою програмування Go, а бібліотека використовує клієнтську бібліотеку Kubernetes для взаємодії з Kubernetes через REST і JSON. Helm зберігає інформацію про релізи в Kubernetes Secrets усередині кластера, тому йому не потрібна власна база даних. Конфігураційні файли, де можливо, записують у форматі YAML.
Наступні кроки
- Скористайтеся посібником зі швидкого старту, щоб встановити Helm і розгорнути свій перший чарт.
- Прочитайте Використання Helm, щоб ознайомитися з повсякденними командами Helm.
- Перегляньте посібник із шаблонів чартів, щоб почати створювати власні чарти.