• Русский
  • Конфигурация 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 resolver позволяет пользователям ссылаться на ресурсы Hub в TaskRuns и PipelineRuns. Правильная конфигурация необходима для разрешения ресурсов каталога.

    Предварительные требования

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

    Включение Hub Resolver

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

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

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

    Настройте значения Hub resolver по умолчанию через 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 resolver:

    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"

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

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

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

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

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

    Проверка Hub Resolver

    Проверьте конфигурацию resolver с помощью простого 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 Resolver

    Проблема: ресурсы не удается разрешить через resolver Hub

    Решения:

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

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

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

    Решения:

    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 после изменения категорий