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