Упаковка и отправка Helm Chart в OCI Registry
В этом руководстве показан практический сценарий CI: ваш Git-репозиторий уже содержит Helm chart (Chart.yaml, templates/, values.yaml и т.д.).
Мы используем Pipeline для:
- Клонирования репозитория с помощью задачи
git-clone - Упаковки чарта с помощью Helm
- Отправки собранного чарта в OCI registry (например, Harbor)
Вы создадите Pipeline с двумя задачами:
git-clone: клонирует ваш репозиторий в общий workspacehelm: упаковывает чарт и отправляет.tgzв ваш OCI registry
Содержание
Предварительные требованияПошаговые инструкцииШаг 1: Создайте Secret с учетными данными для registryШаг 2: Подготовьте образ helmШаг 3: Определите PipelineШаг 4: Запустите PipelineRunУстранение неполадокСледующие шагиПредварительные требования
- Kubernetes кластер (для локального тестирования можно использовать minikube).
- Tekton Pipelines, установленные в вашем кластере.
- Контейнерный образ Helm версии 3.8+ (Helm v3 с поддержкой OCI).
- OCI registry и путь к репозиторию (например, oci://registry.example.com/charts).
- Учетные данные для отправки в OCI registry в виде
Secretтипаkubernetes.io/dockerconfigjson:- Создайте Kubernetes Secret типа
kubernetes.io/dockerconfigjson(пример ниже).
- Создайте Kubernetes Secret типа
- Git-репозиторий, содержащий валидный Helm chart (директория с
Chart.yaml,templates/,values.yaml). - Доступ к Git-репозиторию:
- Публичный репозиторий: ничего особенного.
- Приватный репозиторий: создайте Git credential Secret (SSH или basic-auth).
Почему Secret типа kubernetes.io/dockerconfigjson? Мы укажем Helm использовать этот Secret для доступа к registry через переменную HELM_REGISTRY_CONFIG.
Пошаговые инструкции
Шаг 1: Создайте Secret с учетными данными для registry
Вам нужен Secret с учетными данными для вашего OCI registry типа kubernetes.io/dockerconfigjson.
Вы можете ознакомиться с разделом Prepare Registry Credential.
Шаг 2: Подготовьте образ helm
Вам нужен контейнерный образ Helm 3.8+ (Helm v3 с поддержкой OCI) для выполнения команды helm.
Вы можете ознакомиться с разделом Discover Tool Image.
При поиске по метке укажите образ как helm, например: -l operator.tekton.dev/tool-image=helm.
Шаг 3: Определите Pipeline
Этот Pipeline использует git-clone для получения вашего репозитория, затем вызывает helm для упаковки и отправки чарта.
Пожалуйста, замените <helm-image> на ваш образ Helm.
Шаг 4: Запустите PipelineRun
Привяжите workspaces и передайте параметры.
Устранение неполадок
helm: command not found: Убедитесь, что в вашемimageдействительно есть бинарь Helm.Error: unknown command "push": В вашем образе Helm отсутствует поддержка OCI push. Используйте более новый образ Helm (3.8+).unauthorized: authentication required: Убедитесь, что Secret корректен и смонтирован в registry-creds. Проверьте, чтоHELM_REGISTRY_CONFIGуказывает на этот путь.