• Русский
  • TektonPipeline

    TektonPipeline — это пользовательский ресурс, предоставляемый оператором Tekton, который позволяет устанавливать, обновлять и управлять Tekton Pipelines в вашем кластере Kubernetes. Он предоставляет декларативный способ конфигурации и поддержания компонентов Tekton Pipeline без необходимости вручную применять манифесты.

    Пояснение терминологии

    ТерминОписание
    TektonPipelineПользовательский ресурс, который управляет жизненным циклом компонентов Tekton Pipeline в кластере Kubernetes.
    Tekton OperatorОператор Kubernetes, который управляет компонентами Tekton, включая Pipeline, Triggers, Dashboard и другие.
    targetNamespaceПространство имен, в котором будут установлены компоненты Tekton Pipeline.
    Pipeline ControllerОсновной контроллер, который обрабатывает ресурсы Pipeline и Task.
    WebhookКомпонент, который проверяет ресурсы Tekton Pipeline перед их сохранением в кластере.

    Зачем нам нужен TektonPipeline

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

    Ручная установка и поддержка компонентов Tekton Pipeline включает:

    • Применение множества манифестов для различных компонентов
    • Отслеживание версий компонентов и их совместимости
    • Управление обновлениями и откатами безопасно
    • Конфигурирование компонентов последовательно в разных средах
    • Обработка пользовательских настроек для конкретных развертываний

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

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

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

    Ресурс TektonPipeline предоставляет декларативный, родной для Kubernetes способ:

    1. Упростить установку: Установить все компоненты Pipeline с помощью одного ресурса
    2. Централизовать конфигурацию: Управлять всеми настройками компонентов в одном месте
    3. Автоматизировать обновления: Легко обновлять до новых версий, изменяя ресурс
    4. Обеспечить согласованность: Применять ту же конфигурацию в разных средах
    5. Поддерживать настройку: Настраивать компоненты Pipeline в зависимости от конкретных требований

    Этот подход позволяет лучше управлять компонентами Tekton Pipeline, сохраняя возможность настройки по мере необходимости.

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

    • Упрощенное управление: Один ресурс для управления всеми компонентами Pipeline
    • Декларативная конфигурация: Определяйте желаемое состояние и позволяйте оператору обрабатывать детали реализации
    • Контроль версий: Легкое отслеживание изменений конфигурации через практики GitOps
    • Автоматическая согласованность: Оператор обеспечивает соответствие фактического состояния желаемому состоянию
    • Проверка конфигурации: Встроенная проверка параметров конфигурации
    • Упрощенные обновления: Упрощенный процесс обновления до новых версий
    • Родной для Kubernetes: Бесшовная интеграция с экосистемой Kubernetes

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

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

    1. Начальная развертка: Настройка Tekton Pipeline в новом кластере Kubernetes.

    2. Управление конфигурацией: Управление изменениями конфигурации Pipeline с течением времени.

    3. Обновление версий: Обновление Tekton Pipeline до новых версий.

    4. Многоуровневые развертывания: Обеспечение последовательного развертывания Pipeline в нескольких кластерах.

    5. Пользовательские развертывания: Реализация конкретных конфигураций Pipeline для разных сред.

    6. GitOps рабочие процессы: Включение конфигурации Pipeline в процессы развертывания GitOps.

    Ограничения и ограничения

    • Требуется, чтобы оператор Tekton был установлен в кластере
    • Некоторые расширенные конфигурации могут требовать другие ресурсы оператора Tekton
    • Изменения в определенных полях могут потребовать перезапуска компонентов
    • Необходимо следовать принципам управления ресурсами Kubernetes

    Принципы

    Структура TektonPipeline

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

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonPipeline
    metadata:
      name: pipeline
    spec:
      targetNamespace: tekton-pipelines
      await-sidecar-readiness: true
      coschedule: workspaces
      disable-affinity-assistant: false
      disable-creds-init: false
      disable-home-env-overwrite: true
      disable-working-directory-overwrite: true
      disable-inline-spec: "taskrun,pipelinerun,pipeline"
      enable-api-fields: beta
      enable-bundles-resolver: true
      enable-cel-in-whenexpression: false
      enable-cluster-resolver: true
      enable-custom-tasks: true
      enable-git-resolver: true
      enable-hub-resolver: true
      enable-param-enum: false
      enable-provenance-in-status: true
      enable-step-actions: false
      enforce-nonfalsifiability: none
      keep-pod-on-cancel: false
      max-result-size: 4096
      metrics.count.enable-reason: false
      metrics.pipelinerun.duration-type: histogram
      metrics.pipelinerun.level: pipeline
      metrics.taskrun.duration-type: histogram
      metrics.taskrun.level: task
      require-git-ssh-secret-known-hosts: false
      results-from: termination-message
      running-in-environment-with-injected-sidecars: true
      send-cloudevents-for-runs: false
      set-security-context: false
      trusted-resources-verification-no-match-policy: ignore
      performance:
        disable-ha: false
        buckets: 1
        replicas: 1
        threads-per-controller: 2
        kube-api-qps: 5.0
        kube-api-burst: 10
        statefulset-ordinals: false
      options:
        disabled: false
        configMaps: {}
        deployments: {}

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

    1. targetNamespace: Где будут установлены компоненты Tekton Pipeline

      • По умолчанию это "tekton-pipelines"
      • Все компоненты Pipeline будут созданы в этом пространстве имен
      • Убедитесь, что у вас есть разрешения на создание ресурсов в этом пространстве имен
    2. version: Версия Tekton Pipeline для установки

      • Можно указать конкретную версию, такую как "v0.45.0"
      • Пропуск этого поля установит последнюю версию, поддерживаемую оператором
    3. Флаги функций: Многие параметры конфигурации для управления поведением Pipeline

      • disable-affinity-assistant: Управляет поведением помощника по аффинности
      • disable-creds-init: Управляет инициализацией учетных данных
      • enable-api-fields: Управляет тем, какие API-поля включены
      • enable-custom-tasks: Включает использование пользовательских задач
      • И многие другие, как показано в полной структуре выше
    4. performance: Настройки для высокой доступности и оптимизации производительности

      • replicas: Число реплик контроллера
      • buckets: Число бакетов для контроллера
      • threads-per-controller: Число рабочих потоков на контроллер
      • statefulset-ordinals: Включает режим StatefulSet Ordinals

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

    Базовая установка

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonPipeline
    metadata:
      name: pipeline
    spec:
      targetNamespace: tekton-pipelines

    Настраиваемая установка с флагами функций

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonPipeline
    metadata:
      name: pipeline
    spec:
      targetNamespace: tekton-pipelines
      disable-affinity-assistant: true
      disable-creds-init: true
      enable-api-fields: beta
      enable-custom-tasks: true
      results-from: sidecar-logs
      max-result-size: 4096

    Конфигурация высокой доступности

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonPipeline
    metadata:
      name: pipeline
    spec:
      targetNamespace: tekton-pipelines
      performance:
        disable-ha: false
        buckets: 10
        replicas: 3
        threads-per-controller: 4
        kube-api-qps: 10.0
        kube-api-burst: 20

    Важные объяснения параметров, связанных с TektonPipeline

    Флаги функций

    Флаги функций управляют специфическим поведением контроллера Pipeline.

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

    • Отключение помощника по аффинности по причинам производительности
    • Включение или отключение конкретных функций Pipeline
    • Конфигурирование настроек, специфичных для среды

    Ограничения и ограничения

    • Некоторые флаги функций могут быть устаревшими в будущих версиях
    • Изменение определенных флагов может потребовать повторных запусков пайплайнов
    • Вопросы совместимости между различными флагами

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

    Общие флаги функций включают:

    • disable-affinity-assistant (По умолчанию: false): Установка этого флага в "true" предотвратит создание Tekton помощника по аффинности для каждого TaskRun, использующего совместное PVC рабочее пространство.

    • disable-creds-init (По умолчанию: false): Установка этого флага в "true" предотвратит сканирование прикрепленных сервисных аккаунтов Tekton и внедрение любых найденных учетных данных в ваши Steps.

    • await-sidecar-readiness (По умолчанию: true): Управляет тем, нужно ли ждать, когда боковые контейнеры будут запущены, перед началом первого шага TaskRun.

    • running-in-environment-with-injected-sidecars (По умолчанию: true): Должен быть установлен в false, когда Pipelines работает в кластере, который не использует внедренные боковые контейнеры, такие как Istio.

    • enable-custom-tasks (По умолчанию: false): Включает использование пользовательских задач из пайплайнов.

    Свойства метрик

    Свойства метрик управляют тем, как собираются и сообщаются метрики.

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

    • Настройка мониторинга для Tekton pipelines
    • Настройка поведения сбора метрик
    • Интеграция с системами наблюдаемости

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

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonPipeline
    metadata:
      name: pipeline
    spec:
      targetNamespace: tekton-pipelines
      metrics.pipelinerun.duration-type: histogram
      metrics.pipelinerun.level: pipeline
      metrics.taskrun.duration-type: histogram
      metrics.taskrun.level: task
      metrics.count.enable-reason: true

    Конфигурация производительности

    Раздел производительности позволяет настраивать характеристики производительности контроллера.

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

    • Масштабирование для выполнения пайплайнов с высоким объемом
    • Оптимизация использования ресурсов
    • Реализация конфигураций высокой доступности

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

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonPipeline
    metadata:
      name: pipeline
    spec:
      targetNamespace: tekton-pipelines
      performance:
        disable-ha: false
        buckets: 5
        replicas: 2
        threads-per-controller: 4
        kube-api-qps: 10.0
        kube-api-burst: 20
        statefulset-ordinals: true

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