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