• Русский
  • TektonConfig

    TektonConfig — это основной кастомный ресурс, предоставляемый Tekton Operator, который позволяет пользователям устанавливать, настраивать и управлять всеми компонентами Tekton из единой точки управления. Он обеспечивает единый подход к управлению экосистемой Tekton внутри кластера Kubernetes.

    Объяснение терминологии

    ТерминОписание
    TektonConfigОсновной кастомный ресурс для управления всеми компонентами Tekton через Operator.
    TektonPipelineКомпонент, обеспечивающий основную функциональность pipeline для определения и запуска CI/CD процессов.
    TektonTriggerКомпонент, позволяющий запускать pipeline по событиям.
    TektonChainКомпонент, предоставляющий функции безопасности цепочки поставок, такие как подпись и проверка.
    TektonHubКомпонент, который содержит каталог переиспользуемых Tasks и Pipelines.
    TektonResultКомпонент, который хранит и позволяет выполнять запросы к результатам TaskRun и PipelineRun.
    ProfileОпция конфигурации, определяющая, какие компоненты устанавливать.
    Target NamespaceПространство имён, в котором будут установлены компоненты Tekton.
    PrunerФункция, которая очищает завершённые TaskRuns и PipelineRuns для управления ресурсами кластера.

    Зачем нужен TektonConfig

    Проблема управления компонентами Tekton

    Без TektonConfig управление компонентами Tekton в кластере Kubernetes требует:

    • Ручной установки и настройки каждого компонента отдельно
    • Индивидуального управления версиями компонентов и их совместимостью
    • Пользовательских скриптов для обработки обновлений и изменений конфигурации
    • Отдельного сопровождения конфигурации каждого компонента
    • Сложной координации зависимостей между компонентами

    Это приводит к:

    • Повышенной операционной сложности
    • Риску ошибок конфигурации
    • Трудностям с поддержанием совместимости версий
    • Затратам времени на обновления и изменения
    • Несогласованной конфигурации в разных средах

    Как TektonConfig решает эти проблемы

    TektonConfig предоставляет единый декларативный подход для:

    1. Установки нескольких компонентов: Развёртывание Pipelines, Triggers и других компонентов из одного ресурса
    2. Обеспечения совместимости: Operator управляет совместимостью версий между компонентами
    3. Централизации конфигурации: Настройка всех компонентов через единую спецификацию
    4. Упрощения обновлений: Обновление версий компонентов изменением одного ресурса
    5. Стандартизации управления: Использование единых шаблонов для всех компонентов
    6. Включения платформенно-специфичных функций: Бесшовная настройка функций, специфичных для Kubernetes или OpenShift

    Такой централизованный подход значительно снижает операционную сложность и обеспечивает согласованную конфигурацию во всех средах.

    Преимущества

    • Упрощённое управление: Контроль всех компонентов Tekton через один ресурс
    • Снижение операционных затрат: Operator занимается установкой, настройкой и обновлениями
    • Согласованность: Обеспечение единой конфигурации для всех компонентов
    • Совместимость версий: Operator гарантирует совместимость версий компонентов
    • Платформенная осведомлённость: Поддержка функций, специфичных для Kubernetes и OpenShift
    • Декларативная конфигурация: Использование нативных Kubernetes подходов для управления всей стеком Tekton
    • Снижение риска ошибок: Централизованная валидация предотвращает ошибки конфигурации
    • Очистка ресурсов: Встроенный pruner для управления ресурсами кластера

    Применимые сценарии

    TektonConfig необходим в следующих сценариях:

    1. Производственные CI/CD среды: Упрощение управления производственными установками Tekton.
    2. Мультиарендные кластеры: Настройка и изоляция компонентов Tekton в общих средах.
    3. Корпоративные развертывания: Обеспечение согласованной конфигурации в нескольких кластерах.
    4. Регулируемые среды: Поддержка и проверка специфических конфигураций для соответствия требованиям.
    5. Автоматизированная инфраструктура: Использование GitOps подходов для управления компонентами Tekton.
    6. Сложные CI/CD процессы: Координация нескольких компонентов Tekton для комплексных pipeline.

    Ограничения и лимитации

    • Требуются права на уровне кластера для установки и управления компонентами
    • Некоторые настройки могут быть платформенно-специфичными (Kubernetes vs OpenShift)
    • Изменения ресурса TektonConfig могут вызывать повторное развертывание компонентов
    • Некоторые продвинутые настройки могут требовать прямого взаимодействия с ресурсами конкретных компонентов
    • Обновления между мажорными версиями могут требовать дополнительных действий

    Принципы

    Структура TektonConfig

    Ресурс TektonConfig имеет следующую структуру:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      # Profile определяет, какие компоненты устанавливать
      profile: all  # Варианты: lite, basic, all
    
      # Целевое пространство имён для компонентов Tekton
      targetNamespace: tekton-pipelines
    
      config:
        nodeSelector:
          key: value
        tolerations:
        - key: "key1"
          operator: "Equal"
          value: "value1"
          effect: "NoSchedule"
        priorityClassName: system-node-critical
    
      # Конфигурации для конкретных компонентов
      pipeline:
        disable-affinity-assistant: false
        disable-creds-init: false
        enable-api-fields: alpha
        enable-tekton-oci-bundles: true
        performance:
          disable-ha: false
          buckets: 1
          threads-per-controller: 2
        pruner:
          resources:
            - taskrun
            - pipelinerun
          schedule: "0 8 * * *"
          keep: 100
          keep-since: 43200
    
      trigger:
        enable-api-fields: stable
    
      hub:
        params:
          - name: enable-devconsole-integration
            value: "false"
    
      results:
        enable: false
    
      chain:
        enable: false

    Ключевые компоненты и их взаимосвязи

    1. Profile: Определяет, какие компоненты устанавливать

      • lite: Устанавливает только базовый контроллер Pipeline
      • basic: Устанавливает контроллеры Pipeline и Triggers
      • all: Устанавливает все доступные компоненты
    2. targetNamespace: Пространство имён, в котором будут установлены компоненты

      • Обычно по умолчанию tekton-pipelines
      • Все компоненты устанавливаются в это пространство имён
    3. Конфигурации компонентов: Специфические настройки для каждого компонента

      • pipeline: Настройки контроллера Pipeline
      • trigger: Настройки контроллера Triggers
      • hub: Настройки Tekton Hub
      • results: Настройки Tekton Results
      • chain: Настройки Tekton Chains
    4. Pruner: Конфигурация автоматической очистки ресурсов

      • resources: Какие ресурсы очищать (TaskRuns, PipelineRuns)
      • schedule: Расписание cron для задач очистки
      • keep: Количество ресурсов для сохранения
      • keep-since: Время в секундах для сохранения ресурсов

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

    Минимальная конфигурация

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: basic
      targetNamespace: tekton-pipelines

    Производственная конфигурация со всеми компонентами

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: all
      targetNamespace: tekton-pipelines
    
      pipeline:
        enable-api-fields: stable
        performance:
          disable-ha: false
          buckets: 3
          threads-per-controller: 2
        pruner:
          resources:
            - taskrun
            - pipelinerun
          schedule: "0 1 * * *"
          keep: 500
          keep-since: 172800  # 48 часов
    
      trigger:
        enable-api-fields: stable
    
      hub:
        enable: true
    
      results:
        enable: true
    
      chain:
        enable: true

    Важные пояснения к параметрам

    Конфигурация Pipeline

    Раздел pipeline настраивает основной контроллер Pipeline.

    Применимые сценарии

    • Управление высокой доступностью для производственных сред
    • Контроль использования ресурсов в ограниченных средах
    • Включение экспериментальных функций для тестирования
    • Настройка автоматической очистки завершённых запусков

    Ограничения и лимитации

    • Некоторые функции могут быть специфичны для определённых платформ Kubernetes
    • Изменения настроек HA могут вызвать временные перебои
    • Альфа-поля API могут изменяться между версиями

    Принципы/Пояснение параметров

    Ключевые параметры включают:

    • disable-affinity-assistant: Управление affinity assistant для рабочих пространств
    • disable-creds-init: Управление инициализацией учётных данных
    • enable-api-fields: Управление feature gates (stable, alpha, beta)
    • performance: Настройки производительности и масштабирования контроллера
    • pruner: Конфигурация автоматической очистки ресурсов

    Конфигурация Pruner

    Pruner автоматически очищает завершённые TaskRuns и PipelineRuns для управления ресурсами кластера.

    Применимые сценарии

    • Долговременные кластеры с большим количеством запусков pipeline
    • CI/CD системы с высоким объёмом запусков
    • Среды с ограниченными ресурсами хранения
    • Сценарии соответствия требованиям с политиками хранения

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

    pruner:
      resources:
        - taskrun
        - pipelinerun
      schedule: "0 1 * * *"  # Запуск в 1:00 ночи ежедневно
      keep: 100  # Сохранять 100 последних запусков
      keep-since: 43200  # Сохранять запуски за последние 12 часов (в секундах)

    Справочные материалы