Введение
Tekton Results предназначен для логической группировки исторических записей рабочих нагрузок CI/CD и отделения долгосрочного хранения Результатов от контроллера Pipeline. Это позволяет вам:
- Предоставлять пользовательские метаданные Результатов о рабочих процессах CI/CD, которые недоступны в Tekton TaskRun/PipelineRun CRD (например, действия после запуска)
- Группировать связанные рабочие нагрузки вместе (например, объединение связанных TaskRuns и PipelineRuns в единое целое)
- Сделать долгосрочную историю Результатов независимой от контроллера CRD Pipeline, освобождая ресурсы etcd для выполнения запусков.
- Хранить логи, генерируемые TaskRun/PipelineRun, так что завершенные запуски могут быть очищены для экономии ресурсов.
Дополнительную информацию и мотивацию дизайна можно найти в TEP-0021.
Обзор
Tekton Results состоит из двух основных компонентов:
- API, доступный для запросов через gRPC, поддерживаемый постоянным хранилищем (см. исходный код проекта в proto/v1alpha2 для последних спецификаций API).
- Контроллер наблюдатель, используемый для мониторинга и отчета об обновлениях TaskRuns и PipelineRuns на API-сервер.
Жизненный цикл Результатов
- Пользователи создают TaskRuns или PipelineRuns через API Kubernetes, как обычно.
- Наблюдатель Результатов слушает изменения для всех TaskRuns/PipelineRuns.
- Если TaskRun/PipelineRun изменяется, наблюдатель обновляет (или создает) соответствующую
Recordс использованием API Результатов (он также создастResult, если это необходимо).- Наблюдатель также аннотирует оригинальные TaskRun/PipelineRun с идентификатором.
- Пользователи могут напрямую получать/запрашивать данные Результатов/Записей из API. Как только TaskRun/PipelineRun завершается и успешно сохраняется в API Результатов, оригинальные объекты CRD можно безопасно удалить из кластера.
Модель данных
- Запись - это единственный экземпляр данных. Обычно это данные выполнения (например, PipelineRun, TaskRun, логи), но они также могут ссылаться на другие данные о событиях/выполнениях. Записи спроектированы так, чтобы гибко поддерживать любую информацию, которую инструменты желают предоставить о событиях CI.
- Результаты являются агрегаторами записей, позволяя пользователям ссылаться на группы записей как на единое целое. Например, у вас может быть Результат, группирующий следующие записи:
- Исходное событие, вызвавшее операцию (например, Pull Request, Push).
- Созданный PipelineRun.
- TaskRuns, созданные в ответ на PipelineRun.
- Получение облачных событий.
- Получение обновлений статуса источника.
(Примечание: в настоящее время наблюдатель не поддерживает все эти типы данных, но это примеры данных, которые мы намереваемся поддерживать.)