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

Примечание: приведённая выше диаграмма иллюстрирует общую архитектуру Tekton Chains. Фактическая реализация может отличаться в зависимости от конфигурации.
Основные компоненты
Контроллер Tekton Chains
Контроллер Tekton Chains является центральным компонентом архитектуры. Он работает как контроллер Kubernetes, который:
- Отслеживает завершение TaskRun и PipelineRun в кластере
- Делает снимки (snapshots) завершённых TaskRun и PipelineRun
- Обрабатывает эти снимки для генерации криптографических подписей и аттестаций
- Сохраняет подписи и аттестации в настроенных хранилищах
Контроллер запускается как deployment Kubernetes в пространстве имён tekton-pipelines и отвечает за всю основную функциональность Tekton Chains.
Компоненты подписи
Tekton Chains поддерживает несколько механизмов подписи для обеспечения гибкости в защите артефактов:
- X509 Signer: использует сертификаты X509 для подписи артефактов
- Cosign Signer: интегрируется с Cosign для подписи контейнерных образов
- KMS Signers: поддерживает различные системы управления ключами:
- GCP KMS
- AWS KMS
- Azure KMS
- HashiCorp Vault
Эти компоненты подписи отвечают за криптографическую подпись артефактов и аттестаций, создаваемых Tekton Chains.
Компоненты хранения
Tekton Chains может сохранять подписи и аттестации в различных хранилищах:
- Tekton Storage: сохраняет подписи в виде аннотаций на объектах TaskRun или PipelineRun
- OCI Storage: хранит подписи и аттестации рядом с контейнерными образами в совместимых с OCI реестрах
- GCS Storage: сохраняет подписи и аттестации в корзинах Google Cloud Storage
- DocDB Storage: хранит подписи и аттестации в документных базах данных (например, MongoDB, Firestore)
- Grafeas Storage: сохраняет подписи и аттестации на серверах Grafeas
Поток данных
Поток данных в Tekton Chains проходит следующие этапы:
-
Наблюдение: Контроллер Chains отслеживает выполнение TaskRun и PipelineRun в кластере Kubernetes.
-
Создание снимка: После завершения TaskRun или PipelineRun контроллер делает снимок их состояния, включая входные данные, выходные данные и детали выполнения.
-
Преобразование формата: Снимок преобразуется в один или несколько стандартных форматов полезной нагрузки (например, in-toto attestations, SLSA provenance).
-
Подпись: Отформатированные полезные нагрузки подписываются с использованием настроенного механизма подписи (X509, Cosign, KMS).
-
Хранение: Подписанные полезные нагрузки сохраняются в настроенных хранилищах.
-
Проверка: Внешние инструменты могут позже извлечь и проверить эти подписи для обеспечения целостности артефактов.
Генерация SLSA provenance
Для SLSA (Supply-chain Levels for Software Artifacts) provenance Tekton Chains:
- Извлекает информацию о входных артефактах (исходный код, зависимости) из результатов TaskRun
- Фиксирует детали о среде сборки и процессе
- Записывает информацию о выходных артефактах (контейнерные образы, бинарные файлы)
- Генерирует стандартизированный документ SLSA provenance
- Подписывает документ provenance
- Сохраняет подписанный документ provenance вместе с артефактами или в указанном месте
Архитектура развертывания
Tekton Chains развёртывается как контроллер Kubernetes внутри кластера:
- Namespace: контроллер работает в пространстве имён
tekton-chains - Deployment: один deployment управляет подами контроллера
- Service Account: контроллер использует выделённый service account с необходимыми правами
- Конфигурация: конфигурация управляется через ConfigMap с именем
chains-config- По умолчанию Tekton Chains развёртывается автоматически через ресурс
TektonConfig. Вы можете изменить ресурсTektonConfigдля настройки Chains. - По сути, Tekton Operator синхронизирует конфигурацию Chains из ресурса
TektonConfigв ресурсTektonChains, а затем отражает её в ConfigMapchains-config.
- По умолчанию Tekton Chains развёртывается автоматически через ресурс
- Секреты: ключи подписи и учётные данные хранятся как Kubernetes secrets
Особенности высокой доступности
Контроллер Tekton Chains можно масштабировать горизонтально для обеспечения высокой доступности:
- Можно развернуть несколько реплик для избыточности
- Выбор лидера гарантирует, что в каждый момент времени события обрабатывает только один экземпляр
- Состояние поддерживается через ресурсы Kubernetes, что обеспечивает бесшовное переключение при сбоях
Точки интеграции
Tekton Chains интегрируется с несколькими внешними системами:
- Tekton Pipelines: отслеживает TaskRun и PipelineRun из Tekton Pipelines
- OCI Registries: хранит подписи и аттестации рядом с контейнерными образами
- Key Management Systems: интегрируется с различными провайдерами KMS для безопасного управления ключами
- Transparency Logs: может публиковать аттестации в журналы прозрачности, такие как Rekor
- Verification Systems: предоставляет подписи, которые могут проверяться системами, такими как Kyverno, OPA или Cosign
Эта архитектура позволяет Tekton Chains обеспечивать комплексные функции безопасности цепочки поставок при сохранении гибкости в развертывании и конфигурации.