Skip to main content

Helm

Один из самых популярных пакетных менеджеров для Kubernetes. 

Управление helm

Установка helm: 

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Репозиторий

Команда Доп. пар. Описание
helm repo list Список репозиториев

add repo_name repo_url

Добавить репозиторий repo_name с адресом repo_url 

 

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

update

обновить репозиторий

helm search 
repo keyword

Поиск чартов по репозиториям ключевого слова keyword


hub keyword

В официальном репозитории


--max-col-width=0

+ hub/repo полный вывод текста


--output yaml

+hub/repo вывод в yaml

Плагины

Он сам по себе мощный, но ссылка на плагины 

Команда Доп. пар. Описание
helm plugin install url   Установка плагина
helm plugin list
Список плагинов
helm plugin update pl_name
Обновление плагина
helm plugin unistall pl_name

Удаление плагина

Переменные окружения

Зависит от переменных окружения. Основные переменные: 

Переменная Описание
XDG_CACHE_HOME Размещение кешированных данных. По умолчанию ~/.cache/helm
XDG_CONFIG_HOME Размещение конфигурационного файла По умолчанию ~/.config/helm
XDG_DATA_HOME Размещение плагинов helm По умолчанию ~/.local/share/helm
HELM_DRIVER Драйвер для хранения данных. Secret - хранение авторизационных данных в файле, может быть configmap и memory
HELM_NO_PLUGINS Отключить плагины
KUBECONFIG Размещение конфигурационного файла kubectl

Charts

Команда Доп. пар. Описание
helm install name_chart repo Установить из репозитория repo чарт name_chart

--... Переменные внутри чарта
helm install kubeapps --namespace kubeapps bitnami/kubeapps
helm inspect values 
name_chart > ...

Сохранение чарта в файл

helm inspect values stable/kube-ops-view > kube-ops-view.yaml
helm lint --strict path-to-chart

Проверить соответствие values схеме

helm fetch name_chart

Скачать чарт в tar 


--untar

И распаковать 

helm fetch bitnami/wordpress --untar
helm ls
--namespace namespace

список установленных чартов

helm upgrade ...

Обновление

helm rollback ch_name count

Откатить чарт ch_name на count назад 

helm rollback redis 1 --namespace=redis
helm uninstall name_ch


helm uninstall kubeapps --namespace kubeapps

Общая структура чарта

Helm автоматически определяет последовательность применения шаблонов в чарте. 

Директория/файл Описание Обяз.
Chart.yaml Метаданные чарта +
templates/ Ресурсы кубера в формате yaml helm (yaml с переменными) + если не составной
templates/NOTES.txt Инструкции по использованию -
values.yaml Переменные по умолчанию -
.helmignore Файлы исключения при упаковке чарта -
charts/ Зависимости (другие чарты) -, при отсутствии helm их сгенерирует в соответствии с Chart.yaml
Chart.lock Первично примененные зависимости. -, будет создан автоматически
crds/ Зависимости, которые должны быть собраны до основного чарта -
README.md Описание -
LICENSE Лицензия -
value.shema,json ValuesШаблон в json формате -
files/Дополнительные файлы

templates/

Измененные yaml. Добавлены переменные в формате Go шаблонизации. Переменные берутся из файла values.yaml 

apiVersion: v1
kind: ConfigMap
metadata: 
  name: {{ .Release.Name }}
data:
  configuration.txt: |-
    {{ .Values.configurationData }}

Родительские пространства имен у переменных:

Пространство именОписание
.ReleaseПеременные, связанные с релизом в устанавливаемой системе. .Release.Name - имя релиза  .Release.Namespace - пространство имен релиза .Release.Revision - номер версии
.ValuesПеременные, размещенные в файле values.yaml
.ChartПеременные, получаемые из файла Chart.yaml Например, .Chart.Name, .Chart.Version .Chart.AppVersion 
.Files

Работа с файлами в директории из директории files. Если файл не существует - вернется ошибка.

.Files.Get - Извлекает содержимое файлов

.Files.AsSecrets - Возвращает Base-64 закодированную строку для создания secret 

.Files.AsConfig - Возвращает данные для использования в виде ConfigMap

values.yaml

В виде обычного key: value yaml

# - комментарии