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

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

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

    Tekton Triggers Architecture Diagram

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

    1. EventListener

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

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

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

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

    2. Trigger

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

    • TriggerBinding: правила извлечения данных
    • TriggerTemplate: шаблоны ресурсов
    • 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
    • Может быть на уровне кластера или пространства имён

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

    • Извлечение параметров
    • Трансформация данных
    • Сопоставление переменных

    5. TriggerTemplate

    Определяет создаваемые ресурсы Kubernetes:

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

    Особенности:

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

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

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

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

      • Вызывается цепочка настроенных interceptors
      • Выполняется валидация и трансформация
      • Может прервать или изменить запрос
    3. Извлечение данных

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

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

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

    Базовые компоненты

    1. EventListener Pod

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

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

    Опциональные компоненты

    1. Interceptor Service

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

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

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

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

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

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

      • ServiceAccount
      • RBAC разрешения
      • Управление секретами

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

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

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

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

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

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

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

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

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