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

    Overview

    В этом руководстве описывается базовая конфигурация экземпляров 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 Resolver: Интеграция с 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 предоставляет следующие стандартные категории для организации ресурсов:

    • Automation
    • Build Tools
    • CLI
    • Cloud
    • Code Quality
    • Continuous Integration
    • Deployment
    • Developer Tools
    • Image Build
    • Integration & Delivery
    • Git
    • Kubernetes
    • Messaging
    • Monitoring
    • Networking
    • Openshift
    • Publishing
    • Security
    • Storage
    • Testing
    • Script

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

    Вы можете добавить собственные категории, изменив раздел 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>

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

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

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

    Конфигурация Hub Resolver

    Резолвер Hub позволяет пользователям ссылаться на ресурсы Hub в TaskRuns и PipelineRuns. Правильная настройка необходима для разрешения ресурсов каталога.

    Требования

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

    Включение Hub Resolver

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

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

    Конфигурация Hub Resolver

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

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: hubresolver-config
      namespace: <tekton-pipelines>
    data:
      # Каталог по умолчанию для задач
      default-tekton-hub-catalog: "tekton-catalog-tasks"
    
      # Каталог по умолчанию для пайплайнов
      default-tekton-hub-pipeline-catalog: "tekton-catalog-pipelines"
    
      # Каталоги Artifact Hub по умолчанию
      default-artifact-hub-task-catalog: "tekton-catalog-tasks"
      default-artifact-hub-pipeline-catalog: "tekton-catalog-pipelines"
    
      # Тип ресурса по умолчанию (task или pipeline)
      default-kind: "task"
    
      # Тип hub по умолчанию (artifact или tekton)
      default-type: "artifact"

    Пользовательские конечные точки Hub

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

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tekton-pipelines-remote-resolvers
      namespace: <tekton-pipelines>
    spec:
      template:
        spec:
          containers:
          - name: controller
            env:
            # Пользовательский API Tekton Hub
            - name: TEKTON_HUB_API
              value: "https://your-tekton-hub-api.example.com"
    
            # Пользовательский API Artifact Hub (если используется тип artifact)
            - name: ARTIFACT_HUB_API
              value: "https://your-artifact-hub-api.example.com"

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

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

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

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

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

    Тестирование Hub Resolver

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

    apiVersion: tekton.dev/v1
    kind: TaskRun
    metadata:
      name: test-hub-resolver
    spec:
      taskRef:
        resolver: hub
        params:
        - name: catalog
          value: "your-custom-catalog"  # Должно совпадать с именем каталога в Hub
        - name: type
          value: tekton
        - name: kind
          value: task
        - name: name
          value: echo-hello
        - name: version
          value: "0.1"

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

    Проблемы с Hub Resolver

    Проблема: Ресурсы не разрешаются через резолвер 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. Убедитесь, что аннотации ресурсов соответствуют настроенным категориям
    3. Перезапустите pod API после изменений категорий