Tekton Results
Tekton Results — это сложная система, расширяющая возможности Tekton за счёт обеспечения постоянного хранения, запросов и управления данными выполнения CI/CD. В этом документе подробно рассматривается работа Tekton Results, её архитектура и эффективное использование.
Содержание
ГлоссарийЗачем нужен Tekton ResultsПроблема управления данными CI/CDКак Tekton Results решает эти проблемыПреимуществаПрименимые сценарииАрхитектура и принципыАрхитектура API ServerАрхитектура WatcherАрхитектура Retention Policy AgentМодель данных подробноСтруктура ResultСтруктура RecordАутентификация и авторизацияРасширенная фильтрацияВажные параметрыПараметры WatcherПараметры API ServerПараметры Retention PolicyСсылкиГлоссарий
Зачем нужен Tekton Results
Проблема управления данными CI/CD
В традиционных CI/CD системах на базе Kubernetes, таких как Tekton Pipelines, все данные выполнения хранятся в базе данных etcd API-сервера Kubernetes. Такой подход имеет несколько ограничений:
- Ограниченная ёмкость хранения: etcd предназначен для хранения небольших объёмов конфигурационных данных, а не больших объёмов истории выполнения и логов
- Ограничения ресурсов: с ростом нагрузки CI/CD ресурсы etcd могут значительно расходоваться, что потенциально влияет на производительность кластера
- Фрагментация данных: связанные действия CI/CD (TaskRuns, PipelineRuns) хранятся как отдельные ресурсы без явных связей
- Управление логами: логи обычно хранятся в среде выполнения контейнеров или внешних системах логирования, что затрудняет их связывание с конкретными запусками pipeline
- Жизненный цикл данных: отсутствует встроенный механизм управления жизненным циклом завершённых данных CI/CD
Эти ограничения становятся всё более критичными с ростом использования CI/CD, приводя к потенциальным проблемам с производительностью и административной нагрузкой.
Как Tekton Results решает эти проблемы
Tekton Results предлагает комплексное решение, которое:
- Переносит хранение данных: перемещает завершённые данные выполнения CI/CD из etcd в специализированную базу данных, оптимизированную для этой задачи
- Устанавливает связи: создаёт явные связи между связанными действиями CI/CD через модель данных Result/Record
- Централизует хранение логов: сохраняет логи вместе с соответствующими TaskRuns/PipelineRuns
- Обеспечивает управление жизненным циклом данных: реализует политики хранения для автоматического управления данными со временем
- Предоставляет расширенные возможности запросов: предлагает мощные фильтры и возможности поиска, недоступные через API Kubernetes
Преимущества
- Улучшенная производительность кластера: снижает нагрузку на API-сервер Kubernetes и etcd за счёт переноса завершённых данных CI/CD
- Повышенная организация данных: группирует связанные действия CI/CD для лучшей видимости и управления
- Длительное хранение данных: позволяет хранить историю выполнения длительное время без влияния на ресурсы кластера
- Мощные возможности запросов: обеспечивает расширенный фильтр и поиск данных CI/CD
- Интегрированное управление логами: хранит логи вместе с данными выполнения для полной истории pipeline
- Автоматическая очистка: управляет жизненным циклом данных с помощью настраиваемых политик хранения
Применимые сценарии
Tekton Results особенно полезен в следующих случаях:
- Среды с большим объёмом CI/CD: организации, запускающие множество pipeline, генерирующих значительные объёмы данных выполнения
- Требования к соответствию: среды, где необходимо сохранять историю выполнения для аудита или соответствия требованиям
- Кластеры с ограниченными ресурсами: кластеры, где ресурсы etcd ограничены и требуют оптимизации
- Продвинутая аналитика: команды, желающие проводить анализ и отчётность по паттернам выполнения CI/CD
- Мультикомандные среды: организации, где несколько команд используют инфраструктуру Tekton и нуждаются в изолированном просмотре своих данных CI/CD
Архитектура и принципы
Tekton Results построен по архитектуре микросервисов с тремя основными компонентами, которые совместно обеспечивают полное решение:
Архитектура API Server
API Server — центральный компонент, который:
- Обеспечивает доступ к данным: предоставляет gRPC и REST эндпоинты для хранения и получения Results и Records
- Управляет аутентификацией: использует аутентификацию в стиле Kubernetes (service accounts, токены)
- Обеспечивает авторизацию: реализует контроль доступа на основе RBAC для ресурсов Results
- Обрабатывает сохранение данных: взаимодействует с базой данных (PostgreSQL)
- Поддерживает фильтрацию: реализует CEL (Common Expression Language) для мощных фильтров запросов
API Server использует иерархию родитель-потомок, где:
- Namespaces/workspaces — родители для Results
- Results — родители для Records
- Records содержат фактические данные выполнения
Архитектура Watcher
Watcher работает как контроллер Kubernetes, который:
- Отслеживает ресурсы: слушает события TaskRun и PipelineRun в кластере
- Определяет группировку: использует аннотации, метки и ссылки на владельцев для группировки связанных ресурсов
- Создаёт/обновляет Records: сохраняет данные выполнения в базе данных Results через API Server
- Аннотирует ресурсы: добавляет идентификаторы Result к исходным ресурсам Kubernetes
- Управляет удалением: опционально удаляет завершённые ресурсы после их сохранения в базе данных
Watcher использует несколько стратегий для группировки связанных ресурсов:
- аннотация
results.tekton.dev/result - метка
triggers.tekton.dev/triggers-eventid - ссылки на владельцев PipelineRuns
- автоматическая генерация новых имён Result, если информация о группировке отсутствует
Архитектура Retention Policy Agent
Retention Policy Agent отвечает за:
- Планирование очистки: запуск задач очистки по заданному расписанию
- Применение политики хранения: удаление данных, превышающих установленный период хранения
- Управление размером базы данных: предотвращение бесконтрольного роста базы данных Results
Модель данных подробно
Структура Result
Result содержит:
Структура Record
Record содержит:
Аутентификация и авторизация
Tekton Results использует аутентификацию в стиле Kubernetes и RBAC для контроля доступа:
- Аутентификация: использует токены service account, имитацию пользователя и другие методы аутентификации Kubernetes
- Авторизация: реализует RBAC с ресурсами (
results,records) и действиями (get,list,create,update,delete) - Изоляция по namespace: ограничивает права доступа по namespace для мультиарендных сред
Примеры ролей RBAC:
tekton-results-readonly: доступ только для чтения Results и Recordstekton-results-readwrite: доступ на чтение и запись Results и Recordstekton-results-admin: полный доступ, включая удаление Results и Records
Расширенная фильтрация
Tekton Results использует CEL (Common Expression Language) для мощных возможностей фильтрации: