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