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

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

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

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

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

    1. EventListener

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

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

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

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

    2. Trigger

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

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

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

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

    3. Interceptor

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

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

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

    1. Встроенные перехватчики
      • GitHub
      • GitLab
      • Bitbucket
      • CEL (Общий язык выражений)
    2. Пользовательские перехватчики
      • Независимо развернутые сервисы
      • Реализуют стандартные интерфейсы
      • Высокая расширяемость

    4. TriggerBinding

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

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

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

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

    5. TriggerTemplate

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

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

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

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

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

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

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

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

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

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

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

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

    1. Pod EventListener

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

      • Открывает HTTP-узел
      • Поддерживает различные типы служб
      • Настраиваемый TLS

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

    1. Служба перехватчика

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

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

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

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

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

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

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

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

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

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

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

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

    1. Пользовательские перехватчики

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

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

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