Архитектура
Содержание
Обзор архитектурыОсновные компоненты1. Задача2. Выполнение задачи3. Конвейер4. Запуск конвейера5. Рабочие пространстваРабочий процессАрхитектура развертыванияКомпоненты контроллераКомпоненты времени выполненияАрхитектура безопасностиМеханизмы аутентификацииКонтроль авторизацииДизайн расширяемости1. Пользовательские задачи2. Удаленное разрешение3. Результаты и метрикиОбзор архитектуры
Tekton Pipelines — это основанная на Kubernetes система CI/CD, которая предоставляет набор стандартных определений пользовательских ресурсов (CRD) для определения и выполнения CI/CD рабочих процессов в виде последовательности шагов. Она предназначена для облачной среды, масштабируемости и расширяемости.
Основные компоненты
1. Задача
Задача — это основный строительный блок Tekton Pipelines:
- Определяет серию шагов для выполнения
- Выполняется в Pod Kubernetes
- Может принимать входные данные и производить выходные данные
- Выполняет шаги в последовательности
Основные характеристики:
- Каждый шаг выполняется в своем контейнере
- Шаги делят рабочие объемы
- Поддерживает параметризацию
- Могут быть определены требования к ресурсам
2. Выполнение задачи
Выполнение задачи — это экземпляр задачи во время выполнения:
- Создает Pod для выполнения задачи
- Управляет жизненным циклом выполнения задачи
- Собирает и хранит результаты выполнения
- Обрабатывает распределение ресурсов
Рабочий процесс:
- Создает Pod с контейнерами для каждого шага
- Выполняет шаги в последовательности
- Управляет общими объемами между шагами
- Собирает результаты выполнения и статус
3. Конвейер
Конвейер определяет серию задач для выполнения:
- Организует несколько задач
- Определяет порядок выполнения и зависимости
- Управляет потоком данных между задачами
- Поддерживает условное выполнение
Ключевые особенности:
- Управление зависимостями задач
- Передача параметров между задачами
- Совместное использование рабочего пространства между задачами
- Условное выполнение с использованием выражений
when - Параллельное выполнение с
runAfter
4. Запуск конвейера
Запуск конвейера — это экземпляр конвейера во время выполнения:
- Создает выполния задач для каждой задачи в конвейере
- Управляет потоками выполнения
- Обрабатывает распределение ресурсов
- Собирает и хранит результаты выполнения
Основные обязанности:
- Организация создания выполнения задач
- Управление порядком выполнения
- Обработка передачи параметров
- Отслеживание общего статуса выполнения
5. Рабочие пространства
Рабочие пространства предоставляют механизм для совместного использования данных:
- Общая память между задачами
- Поддержка различных типов объемов
- Гибкие параметры монтирования
- Постоянные данные между выполнениями задач
Поддерживаемые типы хранения:
- PersistentVolumeClaims
- ConfigMaps
- Secrets
- EmptyDir volumes
- CSI (Container Storage Interface) volumes
- Проецируемые объемы
Рабочий процесс
-
Определение конвейера
- Определите задачи со шагами
- Определите конвейер с зависимостями задач
- Настройте параметры и рабочие пространства
-
Выполнение конвейера
- Создайте ресурс PipelineRun
- Контроллер создает выполнения задач на основе зависимостей
- Выполния задач создают Pods для выполнения шагов
- Результаты собираются, и статус обновляется
-
Поток данных
- Параметры передают данные между компонентами конвейера
- Рабочие пространства обмениваются файлами между задачами
- Результаты из задач могут быть использованы в последующих задачах
-
Завершение
- Все выполния задач завершаются
- Статус выполнения конвейера обновляется
- Результаты хранятся и доступны для извлечения
Архитектура развертывания
Компоненты контроллера
-
Контроллер конвейера Tekton
- Наблюдает за экземплярами Tekton CRD
- Создает и управляет ресурсами Kubernetes
- Обрабатывает управление жизненным циклом
- Обновляет информацию о статусе
-
Webhook Tekton
- Проверяет ресурсы Tekton
- Применяет значения по умолчанию
- Обеспечивает согласованность ресурсов
-
Удаленные резолверы Tekton
- Разрешает определения задач и конвейеров из удаленных источников
- Поддерживает OCI пакеты
- Поддерживает разрешение на основе Git
- Поддерживает разрешение на основе HTTP
Компоненты времени выполнения
-
Pods выполнения задач
- Контейнер для каждого шага
- Инициализирующие контейнеры для настройки
- Общие объемы для рабочих пространств
- Побочные контейнеры для специальной функциональности
-
Управление ресурсами
- Планирование Pods
- Запросы и ограничения ресурсов
- Выбор узлов и аффинитет
- Приоритетные классы
Архитектура безопасности
Механизмы аутентификации
- Интеграция учетной записи службы
- Выполнения задач и выполнения конвейеров используют учетные записи службы
- Поддерживает Kubernetes RBAC
- Управление секретами для учетных данных
Контроль авторизации
-
Контроль доступа к ресурсам
- Контроль доступа на основе ролей
- Изоляция пространств имен
- Квоты ресурсов
-
Безопасность выполнения
- Контексты безопасности Pods
- Политики сети
- Обеспечение безопасной работы с рабочими пространствами
Дизайн расширяемости
1. Пользовательские задачи
- Расширение за пределами выполнения контейнеров
- Реализации пользовательских ресурсов
- Интеграция с внешними системами
2. Удаленное разрешение
- Удаленные определения задач и конвейеров
- Поддержка OCI пакетов
- Разрешение на основе Git
- Разрешение на основе HTTP
3. Результаты и метрики
- Результаты задач и конвейеров
- Метрики выполнения
- Интеграция с системами наблюдаемости
- Пользовательские обработчики результатов