Архитектура
Содержание
Обзор архитектурыОсновные компоненты1. Task2. TaskRun3. Pipeline4. PipelineRun5. WorkspacesРабочий процессАрхитектура развертыванияКомпоненты контроллераКомпоненты времени выполненияАрхитектура безопасностиМеханизмы аутентификацииКонтроль авторизацииДизайн расширяемости1. Custom Tasks2. Удалённое разрешение3. Результаты и метрикиОбзор архитектуры
Tekton Pipelines — это основанная на Kubernetes система CI/CD, которая предоставляет набор стандартных Custom Resource Definitions (CRDs) для определения и запуска CI/CD рабочих процессов в виде серии шагов. Она разработана как облачно-нативное, масштабируемое и расширяемое решение.
Основные компоненты
1. Task
Task — это базовый строительный блок Tekton Pipelines:
- Определяет серию шагов для выполнения
- Запускается в Kubernetes Pod
- Может принимать входные данные и генерировать выходные
- Выполняет шаги последовательно
Основные характеристики:
- Каждый шаг выполняется в собственном контейнере
- Шаги используют общие тома workspace
- Поддерживает параметризацию
- Может определять требования к ресурсам
2. TaskRun
TaskRun — это экземпляр выполнения Task:
- Создаёт Pod для выполнения Task
- Управляет жизненным циклом выполнения Task
- Собират и сохраняет результаты выполнения
- Обрабатывает выделение ресурсов
Рабочий процесс:
- Создаёт Pod с контейнерами для каждого шага
- Выполняет шаги последовательно
- Управляет общими томами между шагами
- Собират результаты выполнения и статус
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 тома
Рабочий процесс
-
Определение Pipeline
- Определение Tasks с шагами
- Определение Pipeline с зависимостями Tasks
- Настройка параметров и workspaces
-
Выполнение Pipeline
- Создание ресурса PipelineRun
- Контроллер создаёт TaskRuns на основе зависимостей
- TaskRuns создают Pods для выполнения шагов
- Результаты собираются, статус обновляется
-
Поток данных
- Параметры передают данные между компонентами Pipeline
- Workspaces обмениваются файлами между Tasks
- Результаты Tasks могут использоваться в последующих Tasks
-
Завершение
- Все TaskRuns завершаются
- Статус PipelineRun обновляется
- Результаты сохраняются и доступны для получения
Архитектура развертывания
Компоненты контроллера
-
Tekton Pipeline Controller
- Отслеживает экземпляры Tekton CRD
- Создаёт и управляет ресурсами Kubernetes
- Обрабатывает управление жизненным циклом
- Обновляет информацию о статусе
-
Tekton Webhook
- Валидирует ресурсы Tekton
- Применяет значения по умолчанию
- Обеспечивает согласованность ресурсов
-
Tekton Remote Resolvers
- Разрешает определения Task и Pipeline из удалённых источников
- Поддерживает OCI bundles
- Поддерживает разрешение на основе Git
- Поддерживает разрешение по HTTP
Компоненты времени выполнения
-
TaskRun Pods
- Контейнер для каждого шага
- Init контейнеры для настройки
- Общие тома для workspaces
- Sidecar контейнеры для специальных функций
-
Управление ресурсами
- Планирование Pod
- Запросы и лимиты ресурсов
- Выбор узлов и affinity
- Классы приоритетов
Архитектура безопасности
Механизмы аутентификации
- Интеграция с Service Account
- TaskRuns и PipelineRuns используют ServiceAccounts
- Поддержка Kubernetes RBAC
- Управление секретами для учётных данных
Контроль авторизации
-
Контроль доступа к ресурсам
- Ролевой контроль доступа
- Изоляция по namespace
- Квоты ресурсов
-
Безопасность выполнения
- Контексты безопасности Pod
- Сетевые политики
- Безопасная обработка workspace
Дизайн расширяемости
1. Custom Tasks
- Расширение за пределы выполнения контейнеров
- Реализация кастомных ресурсов
- Интеграция с внешними системами
2. Удалённое разрешение
- Удалённые определения Task и Pipeline
- Поддержка OCI bundles
- Разрешение на основе Git
- Разрешение по HTTP
3. Результаты и метрики
- Результаты Task и Pipeline
- Метрики выполнения
- Интеграция с системами наблюдаемости
- Кастомные процессоры результатов