Helm - краткая сводка

Thank you for reading this post, don't forget to subscribe!

Helm — это инстру­мент раз­вер­ты­ва­ния Kubernetes для авто­ма­ти­за­ции созда­ния, упа­ков­ки, настрой­ки и раз­вер­ты­ва­ния при­ло­же­ний и служб в кла­сте­рах Kubernetes.

Если бы Kubernetes был опе­ра­ци­он­ной систе­мой, то Helm был бы мене­дже­ром паке­тов. Ubuntu исполь­зу­ет apt, CentOS исполь­зу­ет yum, а Kubernetes исполь­зу­ет helm.

Helm раз­вер­ты­ва­ет пакет­ные при­ло­же­ния в Kubernetes и струк­ту­ри­ру­ет их в чар­ты (Helm Charts). Чар­ты содер­жат все пред­уста­нов­лен­ные ресур­сы при­ло­же­ния вме­сте со все­ми вер­си­я­ми, кото­рые поме­ще­ны в один лег­ко управ­ля­е­мый пакет.

Helm упро­ща­ет уста­нов­ку, обнов­ле­ние, вызов зави­си­мо­стей и настрой­ку раз­вер­ты­ва­ний в Kubernetes с помо­щью про­стых CLI-команд. Паке­ты про­грамм­но­го обес­пе­че­ния нахо­дят­ся в репо­зи­то­ри­ях или создаются.

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 — рас­пе­ча­тать инфор­ма­цию о вер­сии клиента.

КАК РАБОТАЕТ HELM?

Helm и Kubernetes рабо­та­ют как кли­ент-сер­вер­ное при­ло­же­ние. Кли­ент Helm отправ­ля­ет ресур­сы в кла­стер Kubernetes. Сер­вер­ная часть зави­сит от вер­сии: Helm 2 исполь­зу­ет Tiller, тогда как Helm 3 изба­вил­ся от Tiller и пол­но­стью пола­га­ет­ся на Kubernetes API.

ЧТО ТАКОЕ HELM CHARTS?

Чар­ты Helm (Helm Charts) — это паке­ты Helm, состо­я­щие из фай­лов и шаб­ло­нов YAML, кото­рые пре­об­ра­зу­ют­ся в фай­лы мани­фе­ста Kubernetes. Чар­ты могут повтор­но исполь­зо­вать­ся кем угод­но и в любой сре­де, что умень­ша­ет слож­ность и коли­че­ство дуб­ли­ка­тов. Пап­ки име­ют сле­ду­ю­щую структуру:

КАК РАБОТАЮТ ЧАРТЫ HELM?

Три основ­ные кон­цеп­ции чар­тов Helm:

  1. Чарт — пред­ва­ри­тель­но настро­ен­ный шаб­лон ресур­сов Kubernetes.
  2. Релиз — чарт, раз­вер­ну­тый с помо­щью Helm в кла­сте­ре Kubernetes.
  3. Репо­зи­то­рий — обще­до­ступ­ные чарты.

Рабо­чий про­цесс заклю­ча­ет­ся в поис­ке чар­тов через репо­зи­то­рии и созда­нии рели­зов путем уста­нов­ки чар­тов в кла­сте­ры Kubernetes.

СТРУКТУРА ЧАРТА HELM

Фай­лы и ката­ло­ги чар­та Helm име­ют опре­де­лен­ную функцию:

Назва­ние Тип Функ­ция
charts/ Ката­лог Ката­лог для управ­ля­е­мых вруч­ную зави­си­мо­стей чарта.
templates/ Ката­лог Напи­сан­ные на язы­ке Go фай­лы шаб­ло­нов, объ­еди­нен­ные с кон­фи­гу­ра­ци­он­ны­ми зна­че­ни­я­ми из фай­ла values.yaml и пред­на­зна­чен­ные для гене­ра­ции мани­фе­стов Kubernetes.
Chart.yaml Файл Мета­дан­ные о чар­тах, такие как: вер­сия, имя, клю­че­вые сло­ва для поис­ка и так далее.
LICENSE (опци­о­наль­но) Файл Лицен­зия на чарт в тек­сто­вом формате.
README.md (опци­о­наль­но) Файл Удо­бо­чи­та­е­мая инфор­ма­ция для поль­зо­ва­те­лей чарта.
requirements.yaml (опци­о­наль­но) Файл Спи­сок зави­си­мо­стей чарта.
values.yaml Файл Настрой­ки чар­та по умолчанию.

Созда­вай­те чар­ты Helm вруч­ную или соби­рай­те обще­до­ступ­ные чар­ты из репозиториев.

РЕПОЗИТОРИИ ЧАРТОВ HELM

Репо­зи­то­рии содер­жат чар­ты, кото­рые могут быть уста­нов­ле­ны или предо­став­ле­ны для досту­па дру­гим поль­зо­ва­те­лям. Helm обес­пе­чи­ва­ет поиск напря­мую из кли­ен­та. Суще­ству­ет два основ­ных типа поиска:

  • helm search hub — поиск через Artifact Hub из мно­же­ства репозиториев.
  • helm search repo — поиск через репо­зи­то­рии, добав­лен­ные в локаль­ном кли­ен­те Helm с помо­щью helm repo add.

Без каких-либо филь­тров в резуль­та­тах поис­ка отоб­ра­жа­ют­ся все доступ­ные чар­ты. Что­бы уточ­нить запрос, добавь­те усло­вие поис­ка. Например:

helm search hub wordpress

Когда най­де­те под­хо­дя­щий чарт, уста­но­ви­те его с помо­щью helm install.

РЕЛИЗЫ ЧАРТОВ

При уста­нов­ке чар­та созда­ет­ся новый пакет. Коман­да helm install при­ни­ма­ет два аргумента:

helm install <release name> <chart name>

Запуск helm install выво­дит полез­ную инфор­ма­цию и ука­зы­ва­ет, сле­ду­ет ли вам пред­при­нять какие-либо дей­ствия для уста­нов­ки. Чар­ты касто­ми­зи­ру­е­мы и лег­ко настра­и­ва­ют­ся перед уста­нов­кой. Рели­зы Helm лег­ко под­дер­жи­вать и отка­ты­вать в слу­чае любых неже­ла­тель­ных изменений.