Хелм стал фактическим инструментом управления пакетами для ресурсов Kubernetes. В качестве примера взгляните на эти инструкции по установке для Istio (Сервисная сетка Kubernetes и инструмент наблюдения).
В то время как многие инструкции по установке диаграммы Helm Helm побуждают вас запустить очень простую команду ( helm install
) и — Hey Presto — в вашем кластере Kubernetes работает какое -то новое программное обеспечение, я думаю, что этот рабочий процесс должен Если не всегда), нельзя избегать.
Большой недостаток этого рабочего процесса заключается в том, что вы жертвуете повторяемостью.
Рассмотрим сценарий, когда вам нужно переустановить графики Helm.
Скажем, например, вам нужно по какой -то причине мигрировать в новый кластер Kubernetes. Ты может запустить Хелм LS
Чтобы определить все установленные в настоящее время диаграммы и их версии, а затем установить все те, кто на новом кластере, но это значительная ручная работа, и она применяется только в том случае, если у вас есть функционирующий кластер, из которого можно «скопировать» свои диаграммы руля.
Если по какой -то причине ваш кластер достаточно разбит — или, возможно, случайно удален — вы теперь потеряли точную запись, из которых вы установили Helm, и в каких версиях.
Модель Gitops для управления ресурсами Kubernetes — где GIT Repo рассматривается как источник правдоподобия для того, что должно работать в кластере, — это именно решение проблемы повторяемости. Кто -то сделал ручное изменение в кластер, который что -то сломал? Нет проблем, мы просто отказываемся от того, что в GIT. (Действительно, предпочтительно некоторая автоматизация обнаружит изменение и сделает это за вас!)
С другой стороны, вручную бег Установка шляпа
Команды полностью нарушают эту модель, потому что ваш git Repo больше не полностью инкапсулирует описание того, что должно работать в вашем кластере Kubernetes.
Чтобы быть справедливым, руководить, можно обойти эту проблему. Пока вы готовы упаковать все свои ресурсы Kubernetes в диаграмму (ы) Helm, со всеми перечисленными зависимостями (управляемыми с помощью SEMVER), вы можете продолжать использовать модель развертывания Gitops. Но это заставляет вас использовать руль для всего.
Если вы хотите установить Helm Hards в свой кластер Kubernetes, я настоятельно рекомендую:
- Поставьте диаграмму в вашем GIT Repo (или иным образом полностью указать точную версию диаграммы в управлении источником)
- используя
Шаблон шлема
на графике, чтобы сделать его как Kubernetes Yaml - Запуск простого старого
kubectl применить
в результате
Это делает конфигурацию вашего кластера Kubernetes полностью повторять. Это также означает, что все установки диаграммы и обновления версий полностью проверены в управлении источником.
На самом деле — если вы посмотрите на инструкции по установке ISTIO — вы увидите, что это именно рекомендуемый рабочий процесс для установки ISTIO с помощью Helm!
Мы делаем все это, используя нашу систему сборки — Базель Анкет Мы написали несколько пользовательских правил Bazel, которые помогают нам достичь этого рабочего процесса — Не стесняйтесь их использовать , если хочешь.
Принести новую диаграмму в систему сборки простой. В вашем базеле Рабочая пространство
Файл, вам нужно включить следующий код:
# Add the 'dataform' repository as a dependency. git_repository( name = "df", commit = "de1eb66e558fbd349092d9519a8d5a1edefba94f", remote = "https://github.com/dataform-co/dataform.git", ) # Load the Helm repository rules. load("@dataform//tools/helm:repository_rules.bzl", "helm_chart", "helm_tool") # Download the 'helm' tool. helm_tool( name = "helm_tool", )
Чтобы добавить один новый график:
# Download the 'istio' Helm chart. helm_chart( name = "istio", chartname = "istio", repo_url = "https://storage.googleapis.com/istio-release/releases/1.4.0/charts/", version = "v1.4.0", )
Затем, когда вы хотите сделать шаблон, добавьте Сборка
где -то править, искать что -то вроде:
helm_template( name = "istio", chart_tar = "@istio//:chart.tgz", namespace = "istio-system", values = { ... }, )
Вывод этого правила — простые Kubernetes Yaml, готовый к тому, чтобы вы могли развернуть в своем кластере, как вы пожелаете. (Мы используем стандартные Bazel Kubernetes Правила .)
Оригинал: «https://dev.to/benbirt/the-right-way-to-install-helm-charts-4mjp»