Архитектура
Содержание
Обзор архитектурыОсновные компоненты1. EventListener2. Trigger3. Interceptor4. TriggerBinding5. TriggerTemplateРабочий процессАрхитектура развертыванияОсновные компонентыДополнительные компонентыАрхитектура безопасностиМеханизмы аутентификацииУправление авторизациейДизайн расширяемости1. Пользовательские Interceptors2. Шаблоны ресурсовОбзор архитектуры
Tekton Triggers — это система обнаружения и обработки событий на базе Kubernetes, которая обеспечивает автоматический запуск CI/CD pipelines путем преобразования внешних событий (таких как Git commits, image pushes и т. д.) в ресурсы Kubernetes.
Основные компоненты
1. EventListener
EventListener — это точка входа всей системы. Он:
- Создает Kubernetes Service и Pod
- Предоставляет HTTP endpoint для приема внешних событий
- Управляет процессом обработки событий
- Поддерживает несколько методов аутентификации
Основные обязанности:
- Получает и проверяет Webhook events
- Вызывает соответствующие interceptors на основе конфигурации
- Выполняет логику trigger
- Создает ресурсы Kubernetes
2. Trigger
Trigger определяет, как обрабатывать полученные события, и включает:
- TriggerBinding: правила извлечения данных
- TriggerTemplate: шаблоны ресурсов
- Interceptors: interceptors событий (необязательно)
Рабочий процесс:
- Получает данные события
- Обрабатывает их через interceptors (если настроены)
- Извлекает данные с помощью TriggerBinding
- Применяет данные к TriggerTemplate
3. Interceptor
Interceptors предоставляют дополнительный уровень обработки в рабочем процессе обработки событий:
- Фильтрация событий
- Проверка полезной нагрузки
- Преобразование данных
- Аутентификация и авторизация
Поддерживаются два типа:
- Встроенные Interceptors
- GitHub
- GitLab
- Bitbucket
- CEL (Common Expression Language)
- Пользовательские Interceptors
- Независимо развернутые сервисы
- Реализуют стандартные интерфейсы
- Высокая расширяемость
4. TriggerBinding
Отвечает за извлечение информации из данных события:
- Определяет правила сопоставления данных
- Поддерживает синтаксис JSONPath
- Может быть на уровне cluster или namespace
Основные функции:
- Извлечение параметров
- Преобразование данных
- Сопоставление переменных
5. TriggerTemplate
Определяет ресурсы Kubernetes, которые необходимо создать:
- Поддерживает параметризованные шаблоны
- Может создавать несколько ресурсов
- Поддерживает динамическое именование
Возможности:
- Шаблонизация ресурсов
- Замена параметров
- Динамически генерируемые имена
Рабочий процесс
-
Получение события
- Внешняя система отправляет Webhook в EventListener
- EventListener проверяет запрос
-
Обработка Interceptor
- Вызывает настроенную цепочку interceptor
- Выполняет проверку и преобразование
- Может завершить обработку запроса или изменить его
-
Извлечение данных
- TriggerBinding извлекает данные из события
- Применяет правила сопоставления данных
- Подготавливает параметры
-
Создание ресурсов
- TriggerTemplate использует извлеченные данные
- Заменяет параметры в шаблоне
- Создает ресурсы Kubernetes
Архитектура развертывания
Основные компоненты
-
EventListener Pod
- Запускает сервис приема событий
- Содержит основную логику обработки
- Требует определенных разрешений RBAC
-
EventListener Service
- Предоставляет HTTP endpoint
- Поддерживает разные типы Service
- Настраиваемый TLS
Дополнительные компоненты
-
Interceptor Service
- Независимо развернутый interceptor
- Пользовательская логика обработки событий
- Требует сетевой доступности
-
Ingress/Route
- Конфигурация внешнего доступа
- Завершение TLS
- Правила маршрутизации
Архитектура безопасности
Механизмы аутентификации
-
Webhook Authentication
- Проверка Secret Token
- Проверка подписи
- Интеграция с OAuth
-
Kubernetes Authentication
- ServiceAccount
- Разрешения RBAC
- Управление Secret
Управление авторизацией
-
Контроль доступа к ресурсам
- Role-based access control
- Изоляция namespace
- Принцип наименьших привилегий
-
Сетевая безопасность
- Шифрование TLS
- Network policies
- Ограничения доступа
Дизайн расширяемости
1. Пользовательские Interceptors
- Стандартный HTTP interface
- Гибкие варианты развертывания
- Плагинная архитектура
2. Шаблоны ресурсов
- Поддерживает несколько типов ресурсов
- Параметризованная конфигурация
- Динамически генерируемые