Используйте GitHub Container Registry (GHCR) для размещения ваших диаграмм Helm.

TLDR: Полные команды можно найти в конце статьи.

Недавно я начал изучать Helm и подумал о возможности размещения графиков на GitHub Container Registry (GHCR), поскольку графики соответствуют стандарту OCI (Open Container Image), который также используется в образах контейнеров Docker. В связи с этим я попытался понять, какие шаги необходимы для размещения моих графиков на GHCR, поскольку публичные графики / контейнеры бесплатны. В следующем посте будут описаны необходимые шаги. Итак, давайте погрузимся в процесс.

Helm

Прежде всего, убедитесь, что у вас установлен Helm версии >3.8, поскольку поддержка OCI до этой версии является экспериментальной. Использовать функцию до версии 3.8 можно, установив переменную окружения HELM_EXPERIMENTAL_OCI=1.
Если у вас еще не установлен Helm, вы можете сделать это через brew install helm на macOS. Для других операционных систем, пожалуйста, ознакомьтесь с документацией Helm для получения дополнительной информации о вариантах установки 1.

Для целей презентации я буду использовать график по умолчанию, созданный Helm, который является результатом выполнения команды helm create <chart-name>. Для этого сообщения я назову его helm create example-chart. Содержимое созданной директории не является темой этого сообщения, но более подробную информацию можно найти в документации Helm 2.

Чтобы упаковать все это и сделать готовым для отправки в GHCR, Helm предоставляет команду helm package, которая принимает аргумент каталога для упаковки. В родительском каталоге графика. Так что использование команды helm package example-chart создаст новый пакет с именем example-chart-0.1.0.tgz. Номер версии можно изменить в example-chart/Chart.yaml в атрибуте version.

Подготовка реестра контейнеров GitHub

Для отправки в GitHub Container Registry нам необходимо пройти аутентификацию с помощью Personal Access Token. Если вы никогда не создавали его, вы можете выполнить следующие шаги, описанные здесь 3. Убедитесь, что ваш токен имеет следующие права доступа:

  • read:packages
  • write:packages
  • delete:packages

Вы можете либо просто экспортировать ваш Токен доступа для терминальной сессии и использовать export GHCR_PAT=ghp_... с вашим Токеном после знака =, либо использовать ваш .zshrc или .bashrc. Для этого отредактируйте свой файл, например, с помощью nano .zshrc и добавьте строку экспорта в свой файл. Нужная вам оболочка зависит от вашей текущей оболочки по умолчанию. Чтобы узнать, какой из них используется по умолчанию, используйте echo $SHELL в терминале.
После сохранения и закрытия редактора с помощью ctrl + x и подтверждения y вы должны перезагрузить ваш .zshrc с помощью source .zshrc. После этого токен должен быть доступен для использования.

Вход в систему

Чтобы проверить, все ли работает, используйте echo $GHCR_PAT | docker login ghcr.io -u <GITHUB-USERNAME> --password-stdin с вашим именем пользователя после флага -u.
Если все настроено правильно, вы должны получить ответ Login Succeeded.

Нажатие на GHCR

Продвижение теперь очень простое. Получите текущую версию графика и используйте Helm для перехода на GHCR:

export CHART_VERSION=$(grep 'version:' ./example-chart/Chart.yaml | tail -n1 | awk '{ print $2}')
helm push example-chart-${CHART_VERSION}.tgz oci://ghcr.io/niklasmtj
Войдите в полноэкранный режим Выйти из полноэкранного режима

Вы должны получить что-то похожее на следующее:

Pushed: ghcr.io/niklasmtj/example-chart:0.1.0
Digest: sha256:c13e9bc40b48460a7b3af6a5df78b4faeff6af7d0688333124884117478be18c
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь ваш пакет загружен, и вы можете проверить его через свой профиль на вкладке «Пакеты». Например, этот пример графика можно найти в разделе https://github.com/users/niklasmtj/packages/container/package/example-chart.

Вот как вы можете разместить свои графики Helm на GitHub’s Container Registry.

Спасибо за прочтение,
Никлас

Коротко о командах

helm create <chart-name>
helm package <chart-name>
echo $GHCR_PAT | docker login ghcr.io -u <GITHUB-USERNAME> --password-stdin
export CHART_VERSION=$(grep 'version:' ./path/to/Chart.yaml | tail -n1 | awk '{ print $2 }')
helm push <chart-name>-${CHART_VERSION}.tgz oci://ghcr.io/<GITHUB-USERNAME>
Войти в полноэкранный режим Выйти из полноэкранного режима

  1. https://helm.sh/docs/intro/install/

  2. https://helm.sh/docs/chart_template_guide/getting_started/

  3. https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry

Оцените статью
Procodings.ru
Добавить комментарий