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

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

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

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

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

    1. Задача

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

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

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

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

    2. Выполнение задачи

    Выполнение задачи — это экземпляр задачи во время выполнения:

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

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

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

    3. Конвейер

    Конвейер определяет серию задач для выполнения:

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

    Ключевые особенности:

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

    4. Запуск конвейера

    Запуск конвейера — это экземпляр конвейера во время выполнения:

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

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

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

    5. Рабочие пространства

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

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

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

    • PersistentVolumeClaims
    • ConfigMaps
    • Secrets
    • EmptyDir volumes
    • CSI (Container Storage Interface) volumes
    • Проецируемые объемы

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

    1. Определение конвейера

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

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

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

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

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

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

    1. Контроллер конвейера Tekton

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

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

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

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

    1. Pods выполнения задач

      • Контейнер для каждого шага
      • Инициализирующие контейнеры для настройки
      • Общие объемы для рабочих пространств
      • Побочные контейнеры для специальной функциональности
    2. Управление ресурсами

      • Планирование Pods
      • Запросы и ограничения ресурсов
      • Выбор узлов и аффинитет
      • Приоритетные классы

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

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

    1. Интеграция учетной записи службы
      • Выполнения задач и выполнения конвейеров используют учетные записи службы
      • Поддерживает Kubernetes RBAC
      • Управление секретами для учетных данных

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

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

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

      • Контексты безопасности Pods
      • Политики сети
      • Обеспечение безопасной работы с рабочими пространствами

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

    1. Пользовательские задачи

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

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

    • Удаленные определения задач и конвейеров
    • Поддержка OCI пакетов
    • Разрешение на основе Git
    • Разрешение на основе HTTP

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

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