• Русский
  • Архитектура

    Обзор архитектуры

    Tekton Triggers — это система прослушивания и обработки событий на базе Kubernetes, которая позволяет автоматически запускать CI/CD-пайплайны, преобразуя внешние события (например, Git commits, push-операции образов и т. д.) в ресурсы Kubernetes.

    Схема архитектуры Tekton Triggers

    Основные компоненты

    1. EventListener

    EventListener — это точка входа всей системы. Он:

    • Создает Kubernetes Service и Pod
    • Предоставляет HTTP endpoint для приема внешних событий
    • Управляет процессом обработки событий
    • Поддерживает несколько методов аутентификации

    Основные обязанности:

    • Получает и проверяет события Webhook
    • Вызывает соответствующие interceptor'ы на основе конфигурации
    • Выполняет логику trigger
    • Создает ресурсы Kubernetes

    2. Trigger

    Trigger определяет, как обрабатывать полученные события, и включает:

    • TriggerBinding: правила извлечения данных
    • TriggerTemplate: шаблоны ресурсов
    • Interceptors: interceptor'ы событий (необязательно)

    Порядок работы:

    1. Получает данные события
    2. Обрабатывает их через interceptor'ы, если они настроены
    3. Извлекает данные с помощью TriggerBinding
    4. Применяет данные к TriggerTemplate

    3. Interceptor

    Interceptor'ы предоставляют дополнительный уровень обработки в процессе работы с событиями:

    • Фильтрация событий
    • Проверка полезной нагрузки
    • Преобразование данных
    • Аутентификация и авторизация

    Поддерживаются два типа:

    1. Встроенные Interceptor'ы
      • GitHub
      • GitLab
      • Bitbucket
      • CEL (Common Expression Language)
    2. Пользовательские Interceptor'ы
      • Независимо развертываемые сервисы
      • Реализуют стандартные интерфейсы
      • Высокая расширяемость

    4. TriggerBinding

    Отвечает за извлечение информации из данных события:

    • Определяет правила сопоставления данных
    • Поддерживает синтаксис JSONPath
    • Может быть уровня cluster или namespace

    Основные функции:

    • Извлечение параметров
    • Преобразование данных
    • Сопоставление переменных

    5. TriggerTemplate

    Определяет ресурсы Kubernetes, которые будут созданы:

    • Поддерживает параметризованные шаблоны
    • Может создавать несколько ресурсов
    • Поддерживает динамическое именование

    Возможности:

    • Шаблонизация ресурсов
    • Замена параметров
    • Динамически генерируемые имена

    Порядок работы

    1. Прием события

      • Внешняя система отправляет Webhook в EventListener
      • EventListener проверяет запрос
    2. Обработка Interceptor'ами

      • Вызывает настроенную цепочку interceptor'ов
      • Выполняет проверку и преобразование
      • Может завершить обработку или изменить запрос
    3. Извлечение данных

      • TriggerBinding извлекает данные из события
      • Применяет правила сопоставления данных
      • Подготавливает параметры
    4. Создание ресурсов

      • TriggerTemplate использует извлеченные данные
      • Заменяет параметры в шаблоне
      • Создает ресурсы Kubernetes

    Архитектура развертывания

    Основные компоненты

    1. Pod EventListener

      • Запускает сервис приема событий
      • Содержит основную логику обработки
      • Требует определенных разрешений RBAC
    2. Service EventListener

      • Предоставляет HTTP endpoint
      • Поддерживает различные типы Service
      • Настраиваемый TLS

    Дополнительные компоненты

    1. Сервис Interceptor

      • Независимо развернутый interceptor
      • Пользовательская логика обработки событий
      • Требует сетевой доступности
    2. Ingress/Route

      • Конфигурация внешнего доступа
      • Завершение TLS
      • Правила маршрутизации

    Архитектура безопасности

    Механизмы аутентификации

    1. Аутентификация Webhook

      • Проверка Secret Token
      • Проверка подписи
      • Интеграция с OAuth
    2. Аутентификация Kubernetes

      • ServiceAccount
      • Разрешения RBAC
      • Управление Secret

    Контроль авторизации

    1. Контроль доступа к ресурсам

      • Управление доступом на основе ролей
      • Изоляция namespace
      • Принцип наименьших привилегий
    2. Сетевая безопасность

      • Шифрование TLS
      • Сетевые политики
      • Ограничения доступа

    Проектирование расширяемости

    1. Пользовательские Interceptor'ы

    • Стандартный HTTP interface
    • Гибкие варианты развертывания
    • Подключаемая архитектура

    2. Шаблоны ресурсов

    • Поддержка нескольких типов ресурсов
    • Параметризованная конфигурация
    • Динамически генерируемые