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

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

    Tekton Triggers — это система обнаружения и обработки событий на базе Kubernetes, которая обеспечивает автоматический запуск CI/CD pipelines путем преобразования внешних событий (таких как Git commits, image pushes и т. д.) в ресурсы Kubernetes.

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

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

    1. EventListener

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

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

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

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

    2. Trigger

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

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

    Рабочий процесс:

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

    3. Interceptor

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

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

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

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

    4. TriggerBinding

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

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

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

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

    5. TriggerTemplate

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

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

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

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

    Рабочий процесс

    1. Получение события

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

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

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

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

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

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

    1. EventListener Pod

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

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

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

    1. Interceptor Service

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

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

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

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

    1. Webhook Authentication

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

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

    Управление авторизацией

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

      • Role-based access control
      • Изоляция namespace
      • Принцип наименьших привилегий
    2. Сетевая безопасность

      • Шифрование TLS
      • Network policies
      • Ограничения доступа

    Дизайн расширяемости

    1. Пользовательские Interceptors

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

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

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