Добавление пользовательских каталогов в Tekton Hub
Содержание
ОбзорПредварительные требованияДобавление пользовательских каталоговШаг 1. Подготовьте репозиторий каталогаШаг 2. Настройте ConfigMap APIШаг 3. Примените конфигурациюШаг 4. Примените измененияПредварительные требования для пользовательских каталоговУправление несколькими каталогамиАутентификация для private репозиториевАутентификация с помощью SSH keyПредварительные требованияСоздание SSH SecretГенерация записей known_hostsИспользование SSH URL в конфигурации каталогаПроверка и тестированиеПроверка конфигурации каталогаПроверка разрешения ресурсовУстранение неполадокКаталог не отображаетсяРесурсы не загружаютсяСбой аутентификации SSHСбой разрешения ресурсовFAQВ: Я настроил все согласно документации, но все равно не вижу новый каталогОбзор
В этом руководстве объясняется, как настроить экземпляр Tekton Hub, чтобы включить в него пользовательские каталоги из существующих Git-репозиториев. Если сначала нужно создать новый репозиторий каталога, см. Creating a Custom Catalog.
Пользовательские каталоги позволяют организациям предоставлять свои ресурсы Tekton через Tekton Hub, делая их доступными для поиска через Hub resolver и веб-интерфейс.
Важно: Если вы развернули
Tekton HubчерезTektonConfig, изменяйте конфигурацию каталога в ресурсеTektonConfig, а не редактируйтеConfigMapнапрямую. Прямые измененияConfigMapбудут перезаписаны контроллеромTekton Operator.
Примечание о namespace: В этом руководстве
<tekton-pipelines>используется как заполнитель для namespace вашегоTekton Hub. Замените его на фактическое имя вашего namespace. В стандартной установке используется namespacetekton-pipelines.
Предварительные требования
Перед началом работы убедитесь, что у вас есть:
- Kubernetes cluster с установленным Tekton Pipelines
- Запущенный экземпляр Tekton Hub
- Административный доступ к cluster
- Git-репозиторий, содержащий ваши пользовательские ресурсы Tekton, соответствующие структуре Tekton Catalog
Добавление пользовательских каталогов
Шаг 1. Подготовьте репозиторий каталога
Убедитесь, что ваш репозиторий каталога соответствует структуре Tekton Catalog Organization TEP (подробности см. в разделе tutorials).
Шаг 2. Настройте ConfigMap API
Добавьте ваш пользовательский каталог в tekton-hub-api ConfigMap в разделе CATALOGS:
Поля конфигурации каталога:
Подробности использования полей:
org: Используется для организации и группировки каталогов в UI Hub. Может быть любой осмысленной строкой, представляющей владельца каталога.type: Определяет, как каталог классифицируется и отображается в интерфейсе Hub:official: Официальные каталоги Tekton (обычно поддерживаются командой Tekton)community: Каталоги, поддерживаемые сообществом (наиболее распространенный вариант)enterprise: Корпоративные каталогиprivate: Private каталоги (для внутреннего использования)
provider: Указывает платформу Git для корректной интеграции с API и аутентификации:github: GitHub и GitHub Enterprisegitlab: GitLab и self-hosted GitLab
Приоритет настройки URL:
-
sshurlимеет более высокий приоритет, чемurl— если указаны оба поля, для операций git будет использоватьсяsshurl -
Для публичных репозиториев: Используйте только
urlв формате HTTPS -
Для private репозиториев: Необходимо указать и
url, иsshurl—urlтребуется для хранения в базе данных, аsshurlиспользуется для фактических операций git
Важно: url всегда обязателен из-за ограничений базы данных, даже при использовании sshurl для private репозиториев.
Шаг 3. Примените конфигурацию
Примените обновленный ConfigMap к вашему cluster:
Шаг 4. Примените изменения
После обновления ConfigMap примените изменения:
Вариант 1. Перезапустите API Pod
Вариант 2. Дождитесь автоматического обновления
Каталог будет автоматически обновляться в соответствии с настроенным CATALOG_REFRESH_INTERVAL.
Предварительные требования для пользовательских каталогов
Перед добавлением пользовательского каталога в Tekton Hub ваш репозиторий должен соответствовать следующим требованиям:
- Структура репозитория: Следуйте стандарту Tekton Catalog Organization
- Проверка ресурсов: Все Tasks/Pipelines должны включать обязательные метаданные
- Документация: Каждый ресурс должен иметь корректный README и примеры
Подробные инструкции по созданию каталогов, соответствующих требованиям, см. в Creating a Custom Catalog.
Управление несколькими каталогами
Вы можете настроить несколько каталогов в одном экземпляре Tekton Hub:
Рекомендации:
- Используйте описательные и уникальные имена каталогов
- Сохраняйте одинаковые имена каталогов во всех environments
- Используйте подходящие Git revisions (main/master для стабильных, develop для тестирования)
Аутентификация для private репозиториев
Аутентификация с помощью SSH key
Для доступа к private Git-репозиториям или репозиториям в private Git-инстансах необходимо создать SSH credentials в виде Kubernetes secret.
Предварительные требования
- SSH keys должны существовать в каталоге
~/.ssh - Публичный SSH key должен быть добавлен в deploy keys вашего Git-репозитория или в вашу учетную запись
Создание SSH Secret
Создайте Kubernetes secret с именем tekton-hub-api-ssh-crds с вашими SSH credentials:
Важные замечания:
- Secret должен называться точно
tekton-hub-api-ssh-crds - Secret должен быть создан в том же namespace, что и ваша установка Tekton Hub
- Включите все три файла: private key, public key и known_hosts
Генерация записей known_hosts
Важно: Вы должны сгенерировать файл known_hosts, фактически подключившись к Git server, чтобы получить его SSH fingerprint. Простое копирование примеров может не сработать из-за изменения server key или различий между Git providers.
Рекомендуемый подход:
-
Проверьте SSH connection локально, чтобы получить fingerprint server:
-
Альтернатива: используйте ssh-keyscan для генерации записей known_hosts:
-
Проверьте, клонировав репозитории локально с использованием обоих URL:
Пример записи known_hosts (сгенерирован после успешного SSH connection):
Использование SSH URL в конфигурации каталога
При настройке каталогов, которые требуют SSH authentication, укажите оба поля url и sshurl:
Примечание: Для private репозиториев требуются и url (HTTPS), и sshurl (SSH). Для фактических операций git будет использоваться sshurl.
Проверка и тестирование
Проверка конфигурации каталога
После добавления пользовательского каталога проверьте, что он настроен корректно:
Советы: Эндпоинт Tekton Hub API по умолчанию —
tekton-hub-api.tekton-pipelines:8000, он доступен только внутри cluster.Для заполнителя
<your-tekton-hub-api>в командах ниже:
- Внутри pod
tekton-hub-api: используйтеlocalhost:8000- Из других pod в cluster: используйте
tekton-hub-api.tekton-pipelines:8000- Извне cluster: создайте service
NodePortилиIngress(в этом руководстве не рассматривается)Для тестирования можно выполнять эти команды внутри pod
tekton-hub-apiс помощьюwget.
Проверка разрешения ресурсов
Проверьте, что ресурсы могут быть разрешены через Hub resolver:
Устранение неполадок
Каталог не отображается
Проблема: Каталог настроен, но не отображается в API
Решения:
- Проверьте, что ConfigMap был применен:
kubectl get cm tekton-hub-api -o yaml - Перезапустите API pod:
kubectl delete pod app=tekton-hub-api -n <tekton-pipelines> - Проверьте логи API:
kubectl logs deployment/tekton-hub-api -n <tekton-pipelines>
Ресурсы не загружаются
Проблема: Каталог отображается, но ресурсы отсутствуют
Возможные причины:
- Структура репозитория не соответствует стандарту
- Отсутствуют обязательные метаданные (см. Creating a Custom Catalog)
- Проблемы с аутентификацией Git-репозитория
Решения:
- Проверьте логи API на наличие ошибок разбора
- Проверьте синтаксис YAML ресурсов с помощью
kubectl apply --dry-run
Сбой аутентификации SSH
Проблема: Отказано в доступе к private репозиторию
Решения:
- Проверьте, что secret существует:
kubectl get secret tekton-hub-api-ssh-crds - Проверьте, что
known_hostsсодержит ваш Git server - Проверьте SSH connection вручную из pod
Сбой разрешения ресурсов
Проблема: Hub resolver не может найти ресурсы
Распространенные причины:
- Несоответствие имени каталога между ConfigMap и параметрами resolver
- Имя/version ресурса не совпадает со структурой каталогов
- Ресурс не прошел проверку при разборе каталога
Шаги для отладки:
FAQ
В: Я настроил все согласно документации, но все равно не вижу новый каталог
О: Сначала проверьте логи tekton-hub-api на наличие ошибок, связанных с authentication, например "Host key verification failed":
Распространенные причины:
- SSH key не имеет достаточных прав для репозитория
- В файле
known_hostsотсутствует fingerprint Git server - SSH key не был корректно добавлен в deploy keys репозитория
Решение:
-
Сначала проверьте локально: Убедитесь, что вы можете успешно клонировать репозиторий локально, используя те же SSH credentials:
-
Только после успешного локального clone обновите вашу Kubernetes environment:
- Обратитесь к разделу Генерация записей known_hosts, чтобы корректно сгенерировать файл
known_hosts - Пересоздайте secret
tekton-hub-api-ssh-crdsс рабочими credentials - Перезапустите pod
tekton-hub-apiи проверьте логи:
- Обратитесь к разделу Генерация записей known_hosts, чтобы корректно сгенерировать файл