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Параметры политики храненияСсылкиГлоссарий
Почему нам нужен 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 в кластере
- Определяет группировку: использует аннотации, метки и owner references для группировки связанных ресурсов
- Создаёт/обновляет Records: сохраняет данные выполнения в базе данных Results через API Server
- Аннотирует ресурсы: добавляет идентификаторы Result к исходным ресурсам Kubernetes
- Управляет удалением: опционально удаляет завершённые ресурсы после их сохранения в базе данных
Watcher использует несколько стратегий для группировки связанных ресурсов:
- аннотация
results.tekton.dev/result - метка
triggers.tekton.dev/triggers-eventid - owner references на PipelineRuns
- автоматическая генерация новых имён Result, если информация для группировки отсутствует
Архитектура агента политики хранения (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) для мощных возможностей фильтрации: