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

Вступ до 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.

Наступні кроки​