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