Skip to content

Создание helm charts и настройка CI/CD для обновления его в кластере

Get started

Оф. сайт разработчика https://helm.sh/docs/intro/install/

Создание чарта

Чарт с дефолт конфигурацией создается командой:

sh
$ helm create [NAME]

Команда получения списка репозиториев с ссылками из AcrtifactHUB

sh
$ helm search hub wordpress

Чтобы добавить необходимую библиотеку с чартами:

sh
$ helm repo add brigade https://brigadecore.github.io/charts

Команда получения списка библиотеки с чартами:

sh
$ helm search repo brigade

Установить чарт:

sh
$ helm install my-chart-name [REPO/NAME]

Удалить чарт:

sh
$ helm uninstall my-chart

Список развёрнутых чартов:

sh
$ helm list

Обновление чарта

Команда обновления чарта:

  • В папке с чартом :
sh
$ helm repo upgrade -f values.yml .
  • Вне папки:
sh
$ helm repo upgrade -f values.yml chart-name [REPO/NAME]

CI/CD

Для автоматичемкого обновления чарта нам понадобиться:

  • Репозиторий с сервисом и файлом CI/CD

  • Раннер, созданный с помощью чарта

  • Корректно выданные права для раннера

Создание раннера

Для начала необходимо развернуть отдельный чарт с раннером. Команда для развертки:

sh
$ helm repo add gitlab http://charts.gitlab.io/
$ helm install my-gitlab-runner gitlab/gitlab-runner

Дефолтный файл с конфигами можно взять здесь

Настройка аналогичка настройке обычного раннера в гите, подставляем токен, ссылку репы, всё берем из сетинга репозитория.

ServiceAccount

Чтобы бегун смог совершать действия в нашем кластере, ему необходимо выдать права. Сервис аккаунт у него уже создан; в файле находим строчку rbac, ставим true, далее выдем всё необходимое.

WARNING

Созданный вами раннер работает как тунель между кластером и репозиторием. В процессе выполнения пайплайнов, он запускает разовых бегунов, которые выполняют работу, их настройка есть в конце файла с пометкой runners. В их настройке зададим им priveleged=true. Далее в кластере заходим в раздел Role Bindings и подтягиваем в наши настройке роли ServiceAccound default, чтобы разовые бегуны, которые поумолчанию имеют аккаунт default, смогли корректно выполнять задачи.