• Русский
  • Конфигурация 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 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"
    
      # Каталог по умолчанию для pipeline
      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 Endpoints

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

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tekton-pipelines-remote-resolvers
      namespace: <tekton-pipelines>
    spec:
      template:
        spec:
          containers:
          - name: controller
            env:
            # Пользовательский API endpoint Tekton Hub
            - name: TEKTON_HUB_API
              value: "https://your-tekton-hub-api.example.com"
    
            # Пользовательский API endpoint 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 после изменений категорий