Начало работы с Helm v3

Kate

Administrator
Команда форума
Говоря простым и понятным языком, Helm - это менеджер пакетов для Kubernetes. Если мы примем Kubernetes в качестве ОС, то Helm - это Yum или apt. В Kubernetes все задачи по установке, удалению, обновлению, обновлению выполняются с помощью манифестов YAML. Управление этими YAML немного затруднительно. Чтобы управлять этими постоянно повторяемыми развертываниями, Helm создает из них единый пакет. Вы можете поделиться этим пакетом, версировать его и управлять им более легко по сравнению с YAML. Helm успешно упростил процесс.
Введение в Helm
Helm был создан, чтобы подчеркнуть возможность повторного использования конфигурации. Это может помочь поддерживать жизненный цикл развертывания на основе Kubernetes. Helm - это проект CNCF, разработанный на языке Go.
В развертывании на основе Kubernetes манифесты YAML - это все. Kubernetes поддерживает запуск множества экземпляров нескольких приложений. Для развертывания приложений требуются полные этапы жизненного цикла, такие как развертывание, обновление, удаление, откат и т. Д. Выполнение этих этапов с помощью файлов YAML - утомительная задача. Хельм отсортировал это с помощью шаблонов. Вы можете создать шаблон из YAML и повторно использовать его в соответствии с требованиями. Важной особенностью является то, что вы можете передавать значения в этом файле YAML как переменные. Давайте подробно обсудим компоненты Helm.
Клиент Helm
Инструмент командной строки, который предоставляет пользовательский интерфейс для работы с Helm.
Диаграмма
В словаре Хелма пакет называется диаграммой. Каждая диаграмма состоит из нескольких файлов конфигурации и шаблонов YAML, которые отображаются в файлах манифеста Kubernetes. Структура диаграммы -

$ tree
.
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml3 directories, 10 files

1*kE4EujHbY8wl1riNZ4WyTQ.png



Каждый каталог и файл имеют определенную функцию: -
диаграммы: для зависимостей диаграмм
values.yaml: файл YAML со значениями конфигурации по умолчанию для диаграммы.
templates: содержит файлы шаблонов с переменными, а значение переменной по умолчанию берется из values.yaml и командной строки. В шаблонах используется формат шаблона языка программирования Go.
Chart.yaml: файл с метаданными о диаграмме.
ЛИЦЕНЗИЯ: текстовый файл лицензии.
README.md: файл Readme
Репозиторий диаграмм
Репозитории диаграмм - это веб-сайты, где хранятся упакованные диаграммы. Вы можете использовать общедоступные репозитории для развертывания Chart или создать свой собственный частный репозиторий.
Версия
У каждой диаграммы Helm есть 2 отдельные версии:
Сама версия диаграммы [версия inChart.yaml]
Версия приложения в диаграмме [appVersion in Chart.yaml]
Как установить Helm?
Загрузите двоичную версию Helm на клиентскую машину. Распакуйте сжатый файл и переместите его в желаемое место назначения (переменные пути)

$ curl -fsSL -o helm-v3.5.0-rc.2-linux-amd64.tar.gz https://get.helm.sh/helm-v3.5.0-rc.2-linux-amd64.tar.gz
$ tar -xvzf helm-v3.5.0-rc.2-linux-amd64.tar.gz
$ cd linux-amd64
$ sudo cp helm /usr/local/bin/

1*tgbooyEdwA54FalSqZBBcg.png

Helm Installation

Вы можете установить Helm с помощью диспетчера пакетов, а также с помощью Homebrew для macOS, Chocolatey для Windows и Snap для Linux.
Как использовать шлем?
Helm Chart можно развернуть, используя URL, каталог и файл (сжатый). Я установлю один график, используя публичный репозиторий для демонстрационных целей. Эта диаграмма представляет собой диаграмму оператора Elasticsearch, доступную в общедоступном репозитории Elasticsearch.
Чтобы развернуть диаграмму, вам нужно добавить репозиторий. Helm предоставляет команды для добавления репозиториев. Вы также можете добавить несколько репозиториев.

$ helm repo add stable https://charts.helm.sh/stable
$ helm repo add elastic https://helm.elastic.co

1*RjBP-Z14nw8VYUKlxu5opw.png

Helm Repository Add
После добавления репозитория попробуйте его перечислить

$ helm repo list

Мы можем перечислить все графики, имеющиеся в репозитории.

$ helm search repo elastic

Если вы хотите найти конкретную диаграмму,

$ helm search repo eck
# Search will not just look for package name, but it will look for string in other fields as well like description

1617292696834.png


Перед использованием репозитория для развертывания диаграмм убедитесь, что вы обновили данные диаграммы.

$ helm repo update

Если вы хотите увидеть файл values.yaml. Эта команда проверяет диаграмму (каталог, файл или URL-адрес) и отображает содержимое файла values.yaml.

$ helm show values elastic/eck-operator
#You can list more details about Chart
$ helm show chart elastic/eck-operator
$ helm show all elastic/eck-operator

Установка диаграммы

$ helm install elastic-operator elastic/eck-operator -n elastic-system --create-namespace
# create-namespaces will help you to create namespace if not exist
# helm install <chart-install-name> <chart-name>

В приведенной выше команде установка будет происходить с доступными значениями по умолчанию. Helm также предоставляет вам возможность передавать значения переменных во время выполнения.
Статус установки:

$ helm ls
helm status <chart-install-name>
# if the chart is deployed in another namespace
$ helm ls --all-namespaces
$ helm status elastic-operator -n elastic-system


1*AajTXt3LW1HPOa99aeDC4Q.png

helm status

через Kubectl вы также можете проверить

1*ZaNqCxGhRe4VOkpB41DFpw.png

pod status


История выпуска чарта

$ helm history elastic-operator -n elastic-system

Удаление диаграммы

$ helm uninstall <chart-install-name>

Откат! Helm отслеживает все развертывания и при необходимости предоставляет возможность отката.

$ helm rollback elastic-operator 2
$ helm rollback <chart-release-name> <version>

Как Helm подключается к кластеру Kubernetes?
Helm использует расположение kubeconfig по умолчанию для подключения к кластеру Kubernetes. Если вы хотите подключить любой другой кластер, для которого kubeconfig размещен в другом месте, вам необходимо обновить следующую переменную env

$KUBECONFIG (default "~/.kube/config")

кроме этой переменной есть и другие переменные. Пожалуйста, посетите документацию https://helm.sh/docs/helm/helm/

Как Helm отслеживает релизы?
Когда вы запускаете такие команды, как Helm Install или upgrade, клиент helm подключается к кластеру Kubernetes и сохраняет запись как секреты Kubernetes. Вы можете увидеть несколько строк, каждая из которых относится к определенной версии и выпуску диаграммы. например sh.helm.release.v1.elastic-operator.v1

kubectl get secret

1*vkwe-NXaMhEZV4EXTh15mg.png

helm secret

Удаление Helm удалит развернутую диаграмму и прикрепленную к ней историю. Но если вы хотите сохранить информацию о выпуске -

helm uninstall --keep-history

Конфигурация руля
Если вы хотите просмотреть информацию о среде клиента helm.

$ helm env

Схема управления отладкой и развертывание
Использовать флаг отладки
Он включает подробный вывод при запуске команды helm.

$ helm install elastic-operator elastic/eck-operator -n elastic-system --create-namespace --debug

Использовать сухой прогон
Helm предлагает опцию пробного запуска для отладки. Используйте эту опцию, если вы не хотите устанавливать диаграмму, но хотите выполнять проверку и отладку только в кластере Kubernetes. Это похоже на вариант kubectl dry run. Он проверит развертывание Chart в кластере K8s, загрузив в него данные.

$ helm install elastic-operator elastic/eck-operator -n elastic-system --create-namespace --values custom.yaml --dry-run

Шаблоны Helm компилируются против версии Kubernetes Cluster.


Использовать шаблон
Шаблон helm поможет вам в рендеринге шаблона. Это позволит вам проверить, что созданные вами шаблоны генерируют правильные YAML-файлы для развертывания.

Шаблон Helm не выполняет полную проверку вывода. Поэтому убедитесь, что вы используете шаблон и пробный прогон вместе, чтобы получить надлежащие результаты.

Helm Get
Вы можете использовать это, чтобы увидеть, какие значения были предоставлены во время выпуска.

helm get values elastic-operator --revision 2
helm get values elastic-operator
helm get manifest elastic-operator

Установить Helm или обновить Helm?
Helm install создает специальный тип секрета Kubernetes, который содержит информацию о выпуске и развертывает диаграмму, если она отсутствует. Если диаграмма присутствует в кластере, она завершится ошибкой. Чтобы обновить любой развернутый выпуск диаграммы, вам нужно использовать команду обновления. Helm предоставляет другой вариант развертывания диаграммы, который проверяет наличие диаграммы или ее отсутствие. В случае утвердительного ответа он обновит диаграмму или установит диаграмму.

helm upgrade --install elastic-operator elastic/eck-operator

По умолчанию Helm отслеживает до десяти ревизий каждой установки.

Как создать Helm Chart
Мы видели, как развертывать диаграммы и управлять ими в приведенных выше примерах. Теперь пора понять, как его создать. Helm предлагает команду create для создания образца диаграммы.

helm create my-dummy-chart

Он сгенерирует необходимые файлы для начала разработки диаграммы. Вы можете преобразовать эти файлы в диаграммы для вашего приложения.

Официальный репозиторий графиков Helm
Репозитории Helm stable и incubator chart перемещены на GitHub и заархивированы. Остальные диаграммы были перемещены в управляемые сообществом репозитории, такие как Artifact Hub, Bitnami и т. Д.
Репозиторий диаграмм на собственном хостинге Helm
Мы можем разместить собственный репозиторий, используя ChartMuseum, Harbour, статический веб-сервер (Apache) или другую систему.
На этом пост. Я расскажу больше о Helm в следующих статьях.
Спасибо, оставайтесь в безопасности и продолжайте учиться.

Перевод статьи с сайта https://medium.com/
 
Сверху