Архитектура
Содержание
Обзор архитектуры Tekton ChainsОсновные компонентыКонтроллер Tekton ChainsКомпоненты подписиКомпоненты храненияПоток данныхГенерация SLSA происхожденияАрхитектура развертыванияСоображения по высокой доступностиТочки интеграцииОбзор архитектуры Tekton Chains
Tekton Chains — это контроллер определения пользовательских ресурсов (CRD) Kubernetes, который включает функции безопасности цепочки поставок для потока Tekton. Архитектура Tekton Chains состоит из нескольких ключевых компонентов, работающих вместе для обеспечения безопасной подписи и проверки артефактов.

Примечание: Диаграмма выше иллюстрирует высокоуровневую архитектуру Tekton Chains. Фактическая реализация может различаться в зависимости от конфигурации.
Основные компоненты
Контроллер Tekton Chains
Контроллер Tekton Chains — это центральный компонент архитектуры. Он работает как контроллер Kubernetes, который:
- Наблюдает за завершениями TaskRun и PipelineRun в кластере
- Делает снимки завершенных TaskRun и PipelineRun
- Обрабатывает эти снимки для генерации криптографических подписей и аттестаций
- Хранит подписи и аттестации в настроенных хранилищах
Контроллер работает как развертывание Kubernetes в пространстве имен tekton-pipelines и отвечает за всю основную функциональность Tekton Chains.
Компоненты подписи
Tekton Chains поддерживает несколько механизмов подписи для обеспечения гибкости в том, как защищаются артефакты:
- Подписчик X509: Использует сертификаты X509 для подписи артефактов
- Подписчик Cosign: Интегрируется с Cosign для подписи контейнерных образов
- Подписчики KMS: Поддерживает различные системы управления ключами:
- GCP KMS
- AWS KMS
- Azure KMS
- HashiCorp Vault
Эти компоненты подписи отвечают за криптографическую подпись артефактов и аттестаций, сгенерированных Tekton Chains.
Компоненты хранения
Tekton Chains может хранить подписи и аттестации в различных хранилищах:
- Хранилище Tekton: Хранит подписи в виде аннотаций на объектах TaskRun или PipelineRun
- OCI хранилище: Хранит подписи и аттестации вместе с контейнерными образами в OCI-совместимых реестрах
- GCS хранилище: Хранит подписи и аттестации в бакетах Google Cloud Storage
- DocDB хранилище: Хранит подписи и аттестации в документальных базах данных (например, MongoDB, Firestore)
- Grafeas хранилище: Хранит подписи и аттестации на серверах Grafeas
Поток данных
Поток данных в Tekton Chains выполняет следующие шаги:
-
Наблюдение: Контроллер Chains наблюдает за выполнением TaskRun и PipelineRun в кластере Kubernetes.
-
Создание снимка: Когда TaskRun или PipelineRun завершается, контроллер создает снимок его состояния, включая входные данные, выходные данные и детали выполнения.
-
Преобразование формата: Снимок преобразуется в один или несколько стандартных форматов полезной нагрузки (например, ин-тото аттестации, SLSA происхождение).
-
Подпись: Форматированные полезные нагрузки подписываются с использованием настроенного механизма подписи (X509, Cosign, KMS).
-
Хранение: Подписанные полезные нагрузки хранятся в настроенных хранилищах.
-
Проверка: Внешние инструменты могут позже извлекать и проверять эти подписи, чтобы гарантировать целостность артефактов.
Генерация SLSA происхождения
Для SLSA (Уровни цепочки поставок для программных артефактов) происхождения Tekton Chains:
- Извлекает информацию об входных артефактах (исходный код, зависимости) из результатов TaskRun
- Фиксирует детали окружения и процесса сборки
- Регистрирует информацию об исходных артефактах (контейнерные образы, бинарные файлы)
- Генерирует стандартизированный документ происхождения SLSA
- Подписывает документ происхождения
- Хранит подписанное происхождение вместе с артефактами или в указанном месте
Архитектура развертывания
Tekton Chains разворачивается как контроллер Kubernetes внутри кластера:
- Пространство имен: Контроллер работает в пространстве имен
tekton-chains - Развертывание: Одно развертывание управляет подами контроллера
- Служебная учетная запись: Контроллер использует выделенную служебную учетную запись с соответствующими правами
- Конфигурация: Конфигурация управляется через ConfigMap под названием
chains-config - Секреты: Ключи подписи и учетные данные хранятся как секреты Kubernetes
Соображения по высокой доступности
Контроллер Tekton Chains может масштабироваться горизонтально для обеспечения высокой доступности:
- Можно развернуть несколько реплик для дублирования
- Выбор лидера обеспечивает, чтобы только один экземпляр обрабатывал события в данный момент
- Состояние поддерживается через ресурсы Kubernetes, что позволяет осуществлять безпроблемный переход при сбое
Точки интеграции
Tekton Chains интегрируется с несколькими внешними системами:
- Tekton Pipelines: Наблюдает за TaskRuns и PipelineRuns из Tekton Pipelines
- OCI Реестры: Хранит подписи и аттестации вместе с контейнерными образами
- Системы управления ключами: Интегрируется с различными поставщиками KMS для безопасного управления ключами
- Журналы прозрачности: Может публиковать аттестации в журналы прозрачности, такие как Rekor
- Системы проверки: Обеспечивает подписи, которые могут быть проверены системами, такими как Kyverno, OPA или Cosign
Эта архитектура позволяет Tekton Chains предоставлять комплексные функции безопасности цепочки поставок при сохранении гибкости в развертывании и конфигурации.