• Русский
  • Конфигурация Tekton Hub

    Обзор

    Это руководство описывает базовую конфигурацию экземпляров Tekton Hub, включая установку и основные системные настройки. Узнайте, как настроить фундаментальные аспекты развертывания Tekton Hub.

    Важно: Если вы развернули Tekton Hub через TektonConfig, изменяйте конфигурацию каталога в ресурсе TektonConfig, а не редактируйте ConfigMap напрямую. Изменения ConfigMap, выполненные напрямую, будут переопределены контроллером Tekton Operator.

    Примечание о namespace: В этом руководстве <tekton-pipelines> используется как заполнитель для namespace вашего Tekton Hub. Замените его на фактическое имя вашего namespace. При стандартной установке используется namespace tekton-pipelines.

    Основные области конфигурации

    В этом руководстве рассматриваются основные темы конфигурации Tekton Hub:

    • Обновление каталога: Автоматическая синхронизация ресурсов
    • Категории: Классификация и упорядочивание ресурсов
    • Резолвер Hub: Интеграция с Tekton Pipelines

    Конфигурация обновления каталога

    Интервал обновления по умолчанию

    По умолчанию Tekton Hub обновляет каталоги каждые 30 минут, чтобы получать последние ресурсы из настроенных репозиториев.

    Изменение интервала обновления

    Интервал обновления можно настроить, изменив параметр CATALOG_REFRESH_INTERVAL в ConfigMap tekton-hub-api.

    Поддерживаемые единицы времени:

    • s (секунды): 30s, 60s
    • m (минуты): 15m, 30m, 45m
    • h (часы): 1h, 2h, 12h
    • d (дни): 1d, 2d
    • w (недели): 1w, 2w

    Пример конфигурации:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: tekton-hub-api
      namespace: <tekton-pipelines>
    data:
      CATALOG_REFRESH_INTERVAL: 30m

    Отключение автоматического обновления

    Чтобы полностью пропустить автоматическое обновление, установите интервал в пустое значение или "0":

    data:
      CATALOG_REFRESH_INTERVAL: "0"

    Конфигурация категорий

    Категории по умолчанию

    Tekton Hub предоставляет следующие стандартные категории для организации ресурсов:

    • Автоматизация
    • Инструменты сборки
    • CLI
    • Облако
    • Качество кода
    • Непрерывная интеграция
    • Развертывание
    • Инструменты разработчика
    • Сборка образов
    • Интеграция и поставка
    • Git
    • Kubernetes
    • Обмен сообщениями
    • Мониторинг
    • Сети
    • Openshift
    • Публикация
    • Безопасность
    • Хранилище
    • Тестирование
    • Скрипты

    Добавление пользовательских категорий

    Вы можете добавить пользовательские категории, изменив раздел CATEGORIES в ConfigMap tekton-hub-api:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: tekton-hub-api
      namespace: <tekton-pipelines>
    data:
      CATEGORIES: |
        - Automation
        - Build Tools
        - CLI
        - Cloud
        - Code Quality
        - Continuous Integration
        - Deployment
        - Developer Tools
        - Image Build
        - Integration & Delivery
        - Git
        - Kubernetes
        - Messaging
        - Monitoring
        - Networking
        - Publishing
        - Security
        - Storage
        - Testing
        - My Custom Category
        - Data Processing
        - Machine Learning

    Рекомендации по категориям:

    • Используйте понятные, описательные имена
    • Соблюдайте формат Title Case
    • Не дублируйте существующие категории
    • Делайте имена краткими, но содержательными

    Применение изменений категорий

    После обновления категорий:

    1. Примените обновленный ConfigMap:

      $ kubectl apply -f tekton-hub-api-configmap.yaml
    2. Обновите конфигурацию Hub:

      # Перезапустите pod API
      $ kubectl delete pod app=tekton-hub-api -n <tekton-pipelines>

    Использование категорий в ресурсах

    Ресурсы в вашем каталоге могут ссылаться на эти категории через annotations:

    metadata:
      annotations:
        tekton.dev/categories: "Build Tools,Continuous Integration"

    Конфигурация резолвера Hub

    Резолвер Hub позволяет пользователям ссылаться на ресурсы Hub в TaskRuns и PipelineRuns. Правильная конфигурация имеет решающее значение для разрешения ресурсов каталога.

    Требования

    • Tekton Pipelines v0.41.0 или более поздняя версия
    • Установлены встроенные remote resolvers
    • Включены beta-функции (если используются beta-возможности резолвера)

    Включение резолвера Hub

    Включите резолвер Hub, установив feature flag в ConfigMap feature-flags:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: feature-flags
      namespace: <tekton-pipelines>
    data:
      enable-hub-resolver: "true"

    Конфигурация резолвера Hub

    Настройте значения по умолчанию для резолвера Hub через ConfigMap hubresolver-config:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: hubresolver-config
      namespace: <tekton-pipelines>
    data:
      # Default catalog for tasks
      default-tekton-hub-catalog: "tekton-catalog-tasks"
    
      # Default catalog for pipelines
      default-tekton-hub-pipeline-catalog: "tekton-catalog-pipelines"
    
      # Default artifact hub catalogs
      default-artifact-hub-task-catalog: "tekton-catalog-tasks"
      default-artifact-hub-pipeline-catalog: "tekton-catalog-pipelines"
    
      # Default resource kind (task or pipeline)
      default-kind: "task"
    
      # Default hub type (artifact or tekton)
      default-type: "artifact"

    Пользовательские endpoints Hub

    В большинстве случаев следует оставить endpoint TEKTON_HUB_API по умолчанию (http://tekton-hub-api.tekton-pipelines:8000/) без изменений. Изменяйте этот endpoint только в том случае, если вам требуется интеграция с внешним hub API.

    Для пользовательских экземпляров Tekton Hub настройте endpoints API через переменные окружения в deployment резолвера:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tekton-pipelines-remote-resolvers
      namespace: <tekton-pipelines>
    spec:
      template:
        spec:
          containers:
          - name: controller
            env:
            # Custom Tekton Hub API endpoint
            - name: TEKTON_HUB_API
              value: "https://your-tekton-hub-api.example.com"
    
            # Custom Artifact Hub API endpoint (if using artifact type)
            - name: ARTIFACT_HUB_API
              value: "https://your-artifact-hub-api.example.com"

    Применение конфигурации

    После обновления конфигурации резолвера:

    1. Примените изменения ConfigMap:

      $ kubectl apply -f hubresolver-config.yaml
    2. Перезапустите deployment резолвера:

      $ kubectl delete pod app=tekton-pipelines-resolvers -n <tekton-pipelines>

    Проверка резолвера Hub

    Проверьте конфигурацию резолвера с помощью простого TaskRun:

    apiVersion: tekton.dev/v1
    kind: TaskRun
    metadata:
      name: test-hub-resolver
    spec:
      taskRef:
        resolver: hub
        params:
        - name: catalog
          value: "your-custom-catalog"  # Must match catalog name in Hub
        - name: type
          value: tekton
        - name: kind
          value: task
        - name: name
          value: echo-hello
        - name: version
          value: "0.1"

    Распространенные проблемы конфигурации

    Проблемы с резолвером Hub

    Проблема: Ресурсы не могут быть разрешены через резолвер Hub

    Решения:

    1. Убедитесь, что резолвер Hub включен: kubectl get cm feature-flags -n <tekton-pipelines> -o yaml
    2. Проверьте конфигурацию резолвера: kubectl get cm hubresolver-config -n <tekton-pipelines>
    3. Убедитесь, что имена каталогов совпадают между конфигурацией Hub и параметрами резолвера

    Проблемы с обновлением каталога

    Проблема: Каталоги не обновляются автоматически

    Решения:

    1. Проверьте настройку интервала обновления: CATALOG_REFRESH_INTERVAL
    2. Убедитесь в доступности репозитория каталога
    3. Просмотрите логи pod API на наличие ошибок синхронизации
    4. Вручную перезапустите pod API: kubectl delete pod app=tekton-hub-api -n <tekton-pipelines>

    Проблемы с конфигурацией категорий

    Проблема: Ресурсы не отображаются в ожидаемых категориях

    Решения:

    1. Убедитесь, что категория существует в конфигурации Hub
    2. Проверьте, что annotations ресурса соответствуют настроенным категориям
    3. Перезапустите pod API после изменения категорий