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