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