• Русский
  • Архитектура

    Обзор архитектуры

    Tekton Pipelines — это основанная на Kubernetes система CI/CD, которая предоставляет набор стандартных Custom Resource Definitions (CRDs) для определения и запуска CI/CD рабочих процессов в виде серии шагов. Она разработана как облачно-нативное, масштабируемое и расширяемое решение.

    Диаграмма архитектуры Tekton Pipelines

    Основные компоненты

    1. Task

    Task — это базовый строительный блок Tekton Pipelines:

    • Определяет серию шагов для выполнения
    • Запускается в Kubernetes Pod
    • Может принимать входные данные и генерировать выходные
    • Выполняет шаги последовательно

    Основные характеристики:

    • Каждый шаг выполняется в собственном контейнере
    • Шаги используют общие тома workspace
    • Поддерживает параметризацию
    • Может определять требования к ресурсам

    2. TaskRun

    TaskRun — это экземпляр выполнения Task:

    • Создаёт Pod для выполнения Task
    • Управляет жизненным циклом выполнения Task
    • Собират и сохраняет результаты выполнения
    • Обрабатывает выделение ресурсов

    Рабочий процесс:

    1. Создаёт Pod с контейнерами для каждого шага
    2. Выполняет шаги последовательно
    3. Управляет общими томами между шагами
    4. Собират результаты выполнения и статус

    3. Pipeline

    Pipeline определяет серию Tasks для выполнения:

    • Оркестрирует несколько Tasks
    • Определяет порядок выполнения и зависимости
    • Управляет потоком данных между Tasks
    • Поддерживает условное выполнение

    Ключевые возможности:

    • Управление зависимостями Tasks
    • Передача параметров между Tasks
    • Совместное использование workspace между Tasks
    • Условное выполнение с помощью выражений when
    • Параллельное выполнение с помощью runAfter

    4. PipelineRun

    PipelineRun — это экземпляр выполнения Pipeline:

    • Создаёт TaskRuns для каждого Task в Pipeline
    • Управляет потоком выполнения
    • Обрабатывает выделение ресурсов
    • Собират и сохраняет результаты выполнения

    Основные обязанности:

    • Оркестрация создания TaskRun
    • Управление порядком выполнения
    • Обработка передачи параметров
    • Отслеживание общего статуса выполнения

    5. Workspaces

    Workspaces предоставляют механизм для совместного использования данных:

    • Общие хранилища между Tasks
    • Поддержка различных типов томов
    • Гибкие варианты монтирования
    • Сохранение данных между выполнениями Tasks

    Поддерживаемые типы хранилищ:

    • PersistentVolumeClaims
    • ConfigMaps
    • Secrets
    • EmptyDir тома
    • CSI (Container Storage Interface) тома
    • Projected тома

    Рабочий процесс

    1. Определение Pipeline

      • Определение Tasks с шагами
      • Определение Pipeline с зависимостями Tasks
      • Настройка параметров и workspaces
    2. Выполнение Pipeline

      • Создание ресурса PipelineRun
      • Контроллер создаёт TaskRuns на основе зависимостей
      • TaskRuns создают Pods для выполнения шагов
      • Результаты собираются, статус обновляется
    3. Поток данных

      • Параметры передают данные между компонентами Pipeline
      • Workspaces обмениваются файлами между Tasks
      • Результаты Tasks могут использоваться в последующих Tasks
    4. Завершение

      • Все TaskRuns завершаются
      • Статус PipelineRun обновляется
      • Результаты сохраняются и доступны для получения

    Архитектура развертывания

    Компоненты контроллера

    1. Tekton Pipeline Controller

      • Отслеживает экземпляры Tekton CRD
      • Создаёт и управляет ресурсами Kubernetes
      • Обрабатывает управление жизненным циклом
      • Обновляет информацию о статусе
    2. Tekton Webhook

      • Валидирует ресурсы Tekton
      • Применяет значения по умолчанию
      • Обеспечивает согласованность ресурсов
    3. Tekton Remote Resolvers

      • Разрешает определения Task и Pipeline из удалённых источников
      • Поддерживает OCI bundles
      • Поддерживает разрешение на основе Git
      • Поддерживает разрешение по HTTP

    Компоненты времени выполнения

    1. TaskRun Pods

      • Контейнер для каждого шага
      • Init контейнеры для настройки
      • Общие тома для workspaces
      • Sidecar контейнеры для специальных функций
    2. Управление ресурсами

      • Планирование Pod
      • Запросы и лимиты ресурсов
      • Выбор узлов и affinity
      • Классы приоритетов

    Архитектура безопасности

    Механизмы аутентификации

    1. Интеграция с Service Account
      • TaskRuns и PipelineRuns используют ServiceAccounts
      • Поддержка Kubernetes RBAC
      • Управление секретами для учётных данных

    Контроль авторизации

    1. Контроль доступа к ресурсам

      • Ролевой контроль доступа
      • Изоляция по namespace
      • Квоты ресурсов
    2. Безопасность выполнения

      • Контексты безопасности Pod
      • Сетевые политики
      • Безопасная обработка workspace

    Дизайн расширяемости

    1. Custom Tasks

    • Расширение за пределы выполнения контейнеров
    • Реализация кастомных ресурсов
    • Интеграция с внешними системами

    2. Удалённое разрешение

    • Удалённые определения Task и Pipeline
    • Поддержка OCI bundles
    • Разрешение на основе Git
    • Разрешение по HTTP

    3. Результаты и метрики

    • Результаты Task и Pipeline
    • Метрики выполнения
    • Интеграция с системами наблюдаемости
    • Кастомные процессоры результатов