Що таке Helm?

Helm — це менеджер пакетів для Kubernetes із відкритим вихідним кодом. Спочатку він був створений у DeisLabs як стороння утиліта, та зараз став одним із ключових проєктів CNCF (Cloud Native Computing Foundation). 

Інструмент забезпечує просте та послідовне розгортання, оновлення, керування ресурсами Kubernetes і робить це все автоматично.

Навіщо потрібен Helm?

Якщо твоя програма містить кілька ресурсів Kubernetes (розгортання, сервіси, конфігурації), без Helm довелося б налаштовувати їх вручну. А це гарантовані витрати часу та підвищений ризик помилок.

Helm автоматизує цей процес і дозволяє розгорнути все однією командою. 

Основні функції Helm

  • Шаблони Helm Charts

Helm використовує чарти — пакети, які містять усі необхідні ресурси для запуску застосунку в Kubernetes. Завдяки ним розгортання й налаштування відбуваються швидше, адже в чарті вже є конфігурація для служб, середовища та залежностей. Можеш брати готові чарти або створювати власні під свої потреби.

  • Управління версіями

Кожен реліз у Helm має свою версію, тож якщо після оновлення щось пішло не так (і таке буває), можна швидко відкотитися назад. 

  • Встановлення та оновлення застосунків

Helm автоматизує встановлення та оновлення — достатньо внести зміни у файл конфігурації, і Helm застосує їх у кластері. Не потрібно вручну редагувати кожен ресурс, тож підтримка застосунку займає менше часу — можна і кавою насолодитись.

  • Управління залежностями

Якщо в проєкті є кілька сервісів або зовнішніх бібліотек, Helm сам подбає про їхнє встановлення та оновлення. 

  • Модульність та повторне використання

Чарти можна адаптувати під різні середовища. Один і той самий набір налаштувань підходить для локальної розробки, тестування і продакшену. Просто змінюй параметри і готово.

  • Гнучка конфігурація

Замість того, щоб змінювати шаблони вручну, можна передавати параметри через файли значень або командний рядок. Тим самим ти швидко зміниш налаштування для різних середовищ. 

  • Керування ресурсами Kubernetes

Helm дозволяє описати в чарті всі ресурси Kubernetes — від ReplicaSet до обсягів пам’яті. 

Як працює Helm?

І так, спочатку ти вибираєш чарт для свого застосунку. Це може бути готовий чарт з офіційного репозиторію або твій власний, якщо ти хочеш налаштувати застосунок під конкретні потреби. Якщо використовуєш свій чарт, ти створюєш його з усіма необхідними параметрами, шаблонами та налаштуваннями для служб і залежностей.

Коли чарт готовий, ти інсталюєш його за допомогою команди helm install. Це автоматично створює всі ресурси в кластері, тобто налаштовує застосунок за допомогою тих шаблонів, які є в чарті. При цьому все працює швидше, тому що не потрібно вручну налаштовувати кожен ресурс.

Щоб підлаштувати чарт під своє середовище, можна використовувати файли значень. Наприклад, якщо потрібно змінити кількість реплік або налаштування для бази даних, можна просто редагувати файл значень, і Helm сам застосує ці зміни.

Якщо потрібно оновити застосунок, Helm допоможе з цим через команду helm upgrade. Замість того, щоб вручну змінювати налаштування, ти просто вносиш необхідні зміни в чарт або файл значень, і Helm виконає оновлення. Якщо щось піде не так, завжди можна повернутися до попередньої версії за допомогою helm rollback.

У разі, якщо твій чарт має залежності від інших застосунків чи сервісів, Helm автоматично завантажить і налаштує ці залежності при інсталяції. Це особливо круто для великих проєктів, де є багато мікросервісів.

І на останок, за допомогою команд, таких як helm list або helm status, можна завжди перевіряти, як йде робота з твоїми інстальованими застосунками. Це дозволяє швидко перевірити статус, не заходячи в кожен контейнер окремо.

Тут ти можеш наочно побачити у чому різниця у використанні Helm та його відсутності:

Плюси та мінуси використання Helm

Значні переваги:

  1. Замість купи файлів YAML — одна команда для встановлення та оновлення застосунків.
  2. Файли значень дають змогу змінювати параметри без редагування шаблонів.
  3. Якщо щось пішло не так, можна швидко повернутися до стабільного стану.
  4. Підходить для будь-яких середовищ — від тестових до розгортань на проді.
  5. Працює з Jenkins, GitLab CI/CD, ArgoCD та іншими DevOps-інструментами
  6. Розробникам не потрібно писати однакові маніфести для кожного застосунку.

Що може стати для тебе перешкодою:

  1. Helm потребує часу на вивчення, особливо для новачків у Kubernetes.
  2. Розробка власних Helm-чартів вимагає уваги до деталей.
  3. Деякі чарти підтримуються сторонніми розробниками, і не завжди їх оновлюють вчасно.

Компоненти Helm

Helm Client: інтерфейс командного рядка, який використовується для взаємодії з Helm.

Helm Repositories: сховища, де зберігаються чарти для різних застосунків.

Helm Charts: пакети, що містять шаблони та конфігураційні файли для розгортання застосунків в Kubernetes. Саме вони автоматизують створення необхідних ресурсів.

Helm Release: конкретне розгортання застосунку в кластері Kubernetes. Кожен раз, коли ти встановлюєш чарт, Helm Release створює новий реліз з унікальною назвою та версією.

Helm Templates: це шаблони, які генерують конфігураційні файли для Kubernetes, такі як YAML. 

Helm Values: налаштування, які передаються в шаблони для конфігурації застосунку. Вони допомагають адаптувати чарт під конкретні потреби середовища. Наприклад, розмір пам’яті чи кількість реплік.

Команди Helm

  • Completion — створює сценарій автозаповнення для вказаної оболонки.
  • Create — створює новий чарт із заданим ім’ям.
  • Dependency — керування залежностями чарта.
  • Env — інформація про клієнтське середовище Helm.
  • Get — завантаження детальної інформації про конкретний реліз.
  • Help — допомога по будь-якій команді.
  • History — перегляд історії релізів.
  • Install — встановлення чарта.
  • Lint — перевірка чарта на можливі проблеми.
  • List — список релізів.
  • Package — упаковка каталогу чарта в архів.
  • Plugin — встановлення, додавання до списку або видалення плагінів Helm.
  • Pull — завантаження чарта з репозиторію або (за бажанням) розпакування його в локальний каталог.
  • Repo — установка, додавання до списку, видалення, оновлення та індексація репозиторіїв чарта.
  • Rollback — відкат релізу до попередньої версії.
  • Search — пошук у чарті за ключовими словами.
  • Show — відображення інформації про чарт.
  • Status — показ статусу вказаного релізу.
  • Template — локальне відображення шаблонів.
  • Test — запуск тестів релізу.
  • Uninstall — видалення релізу.
  • Upgrade — оновлення релізу.
  • Verify — перевірка, що чарт за вказаним шляхом підписаний та дійсний.
  • Version — виведення інформації про версію клієнта.

Корисні джерела

  1. Офіційна документація Helm
  2. Швидкий гайд від Helm по старту роботи
  3. Репозиторій Helm на GitHub
  4. Курс, де ти навчишся працювати з Helm та Kubernetes

Залишити відповідь

Дякуємо, що поділились