Добавление пользовательских каталогов в Tekton Hub
Содержание
ОбзорПредварительные требованияДобавление пользовательских каталоговШаг 1: Подготовьте репозиторий каталогаШаг 2: Настройте API ConfigMapШаг 3: Примените конфигурациюШаг 4: Примените измененияПредварительные требования для пользовательских каталоговУправление несколькими каталогамиАутентификация для private repositoryАутентификация по SSH KeyПредварительные требованияСоздание SSH SecretГенерация записей known_hostsИспользование SSH URLs в конфигурации каталогаПроверка и тестированиеПроверка конфигурации каталогаТестирование разрешения ресурсовУстранение неполадокКаталог не отображаетсяРесурсы не загружаютсяОшибки аутентификации 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: Настройте API ConfigMap
Добавьте ваш пользовательский каталог в tekton-hub-api ConfigMap в разделе CATALOGS:
Поля конфигурации каталога:
Подробности использования полей:
org: Используется для организации и группировки каталогов в UI Hub. Может быть любой осмысленной строкой, представляющей владельца каталога.type: Определяет, как каталог классифицируется и отображается в интерфейсе Hub:official: Официальные каталоги Tekton (обычно поддерживаются командой Tekton)community: Каталоги, поддерживаемые сообществом (наиболее распространенный вариант)enterprise: Каталоги для предприятия/компанииprivate: Private catalogs (для внутреннего использования)
provider: Указывает платформу Git для корректной интеграции API и аутентификации:github: GitHub и GitHub Enterprisegitlab: GitLab и GitLab self-hosted
Приоритет настройки URL:
-
sshurlимеет более высокий приоритет, чемurl— если заданы оба поля, для операций git будет использоватьсяsshurl -
Для публичных репозиториев: Используйте только
urlв формате HTTPS -
Для private repository: Необходимо указать и
url, иsshurl—urlтребуется для хранения в database, аsshurlиспользуется для фактических операций git
Важно: url всегда обязателен из-за ограничений database, даже если для private repositories используется sshurl.
Шаг 3: Примените конфигурацию
Примените обновленный ConfigMap в ваш cluster:
Шаг 4: Примените изменения
После обновления ConfigMap примените изменения:
Вариант 1: Перезапустите API Pod
Вариант 2: Дождитесь автоматического обновления
Каталог будет автоматически обновляться в соответствии с настроенным CATALOG_REFRESH_INTERVAL.
Предварительные требования для пользовательских каталогов
Перед добавлением пользовательского каталога в Tekton Hub ваш репозиторий должен соответствовать следующим требованиям:
- Структура репозитория: Следуйте стандарту Tekton Catalog Organization
- Проверка ресурсов: Все Tasks/Pipelines должны содержать обязательные metadata
- Документация: Для каждого ресурса должны быть корректные README и examples
Подробные инструкции по созданию совместимых репозиториев каталога см. в Creating a Custom Catalog.
Управление несколькими каталогами
Вы можете настроить несколько каталогов в одном экземпляре Tekton Hub:
Рекомендации:
- Используйте описательные и уникальные имена каталогов
- Сохраняйте одинаковые имена каталогов между средами
- Используйте подходящие Git revisions (main/master для стабильной версии, develop для тестирования)
Аутентификация для private repository
Аутентификация по SSH Key
Для доступа к private Git repositories или repositories из private Git instances необходимо создать SSH credentials как Kubernetes secret.
Предварительные требования
- SSH keys должны существовать в каталоге
~/.ssh - Публичный SSH key должен быть добавлен в deploy keys вашего Git repository или в учетную запись пользователя
Создание 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 сервера:
-
Альтернатива: используйте ssh-keyscan для генерации записей known_hosts:
-
Проверьте, клонировав репозитории локально с использованием обоих URL:
Пример записи known_hosts (сгенерированной после успешного SSH connection):
Использование SSH URLs в конфигурации каталога
При настройке каталогов, требующих SSH authentication, укажите оба поля url и sshurl:
Примечание: Для private repositories требуются и url (HTTPS), и sshurl (SSH). Для фактических операций git будет использоваться sshurl.
Проверка и тестирование
Проверка конфигурации каталога
После добавления пользовательского каталога убедитесь, что он правильно настроен:
Советы: Значение по умолчанию для API endpoint Tekton Hub —
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>
Ресурсы не загружаются
Проблема: Каталог отображается, но ресурсы отсутствуют
Возможные причины:
- Структура репозитория не соответствует стандарту
- Отсутствуют обязательные metadata (см. Creating a Custom Catalog)
- Проблемы аутентификации Git repository
Решения:
- Проверьте логи API на наличие ошибок разбора
- Проверьте синтаксис YAML ресурса с помощью
kubectl apply --dry-run
Ошибки аутентификации SSH
Проблема: Доступ к private repository запрещен
Решения:
- Проверьте наличие 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 на наличие ошибок, связанных с аутентификацией, таких как "Host key verification failed":
Распространенные причины:
- У SSH key недостаточно прав для репозитория
- В файле
known_hostsотсутствует fingerprint Git server - SSH key не был правильно добавлен в deploy keys репозитория
Решение:
-
Сначала проверьте локально: Убедитесь, что вы можете успешно клонировать репозиторий локально, используя те же SSH credentials:
-
Только после успешного локального clone обновляйте environment Kubernetes:
- Обратитесь к разделу Generating known_hosts Entries, чтобы корректно сгенерировать файл
known_hosts - Создайте secret
tekton-hub-api-ssh-crdsзаново с рабочими credentials - Перезапустите pod
tekton-hub-apiи проверьте логи:
- Обратитесь к разделу Generating known_hosts Entries, чтобы корректно сгенерировать файл