• Русский
  • TektonPipeline

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

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

    ТерминОписание
    TektonPipelineКастомный ресурс, управляющий жизненным циклом компонентов Tekton Pipeline в Kubernetes кластере.
    Tekton OperatorKubernetes оператор, управляющий компонентами 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 Operator в кластере
    • Некоторые продвинутые настройки могут требовать других ресурсов Tekton Operator
    • Изменения некоторых полей могут требовать перезапуска компонентов
    • Необходимо соблюдать принципы управления ресурсами 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 будут созданы в этом пространстве имён
      • Убедитесь, что у вас есть права на создание ресурсов в этом namespace
    2. version: Версия Tekton Pipeline для установки

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

      • disable-affinity-assistant: Управляет поведением 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.

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

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

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

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

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

    Распространённые флаги функций включают:

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

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

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

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

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

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

    Свойства метрик управляют сбором и отчётностью метрик.

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

    • Настройка мониторинга 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

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

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

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

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

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

    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

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