Введение
Tekton Results предназначен для того, чтобы помогать пользователям логически группировать исторические записи рабочих нагрузок CI/CD и отделять долгосрочное хранилище Results от контроллера Pipeline. Это позволяет:
- Предоставлять пользовательские метаданные Results о рабочих процессах CI/CD, которые недоступны в CRD Tekton TaskRun/PipelineRun (например, действия после выполнения)
- Группировать связанные рабочие нагрузки вместе (например, объединять связанные TaskRuns и PipelineRuns в единый объект)
- Делать долгосрочную историю Results независимой от контроллера CRD Pipeline, тем самым освобождая ресурсы etcd для выполнения запусков.
- Сохранять журналы, сгенерированные TaskRun/PipelineRun, чтобы завершенные запуски можно было очищать и экономить ресурсы.
Дополнительные сведения и мотивация проекта приведены в TEP-0021.
Overview
Tekton Results состоит из двух основных компонентов:
- gRPC API server с возможностью запросов через API, использующий постоянное хранилище (см. исходный код проекта в proto/v1alpha2 для получения последних спецификаций API).
- Watcher controller, используемый для мониторинга и передачи обновлений TaskRuns и PipelineRuns на API server.
Жизненный цикл Results
- Пользователи создают TaskRuns или PipelineRuns через Kubernetes API как обычно.
- Results Watcher отслеживает изменения всех TaskRuns/PipelineRuns.
- Если TaskRun/PipelineRun изменяется, watcher обновляет (или создает) соответствующий
Recordс использованием Results API (при необходимости также создаетсяResult).- watcher также аннотирует исходный TaskRun/PipelineRun идентификатором.
- Пользователи могут напрямую получать/запрашивать данные Results/Records из API. После того как TaskRun/PipelineRun завершен и успешно сохранен в Results API, исходные объекты CRD можно безопасно удалить из кластера.
Модель данных
- Record — это отдельный экземпляр данных. Обычно это данные выполнения (например, PipelineRun, TaskRun, logs), но они также могут ссылаться на другие данные о событиях/выполнениях. Record спроектированы так, чтобы гибко поддерживать любую информацию, которую инструменты хотят предоставлять о событиях CI.
- Results — это агрегаторы Record, позволяющие пользователям ссылаться на группы Record как на единый объект. Например, можно иметь Results, группирующий следующие Record:
- Исходное событие, которое инициировало операцию (например, pull request, push).
- Созданный PipelineRun.
- TaskRuns, созданные в ответ на PipelineRun.
- Получение cloud events.
- Получение обновлений статуса исходного кода.
(Примечание: в настоящее время watcher не поддерживает все эти типы данных, но это примеры данных, поддержку которых мы планируем реализовать.)