Конфигурация Chains
Содержание
ОбзорКонфигурацияКонфигурация в ConfigMapchains-configКонфигурация в TektonConfigКонфигурация TaskRunКонфигурация PipelineRunКонфигурация OCIКонфигурация хранилищаКонфигурация функций SigstoreTransparency LogПодпись без ключа с FulcioСсылкиОбзор
Tekton Chains — это контроллер Kubernetes Custom Resource Definition (CRD), который позволяет управлять безопасностью вашей цепочки поставок в Tekton. В этом документе описывается, как настроить Tekton Chains.
Конфигурация
Конфигурация Chains хранится в ConfigMap с именем chains-config в пространстве имён tekton-pipelines или tekton-chains. Вы можете изменить этот ConfigMap, чтобы изменить поведение Chains.
По умолчанию Tekton Chains разворачивается автоматически через ресурс TektonConfig. Вы можете изменить ресурс TektonConfig для настройки Chains.
По сути, Tekton Operator синхронизирует конфигурацию Chains из ресурса TektonConfig в ресурс TektonChains, а затем отражает её в ConfigMap chains-config.
Если вы разворачиваете Chains через TektonConfig, вы должны настраивать Chains через TektonConfig.
Если вы измените конфигурацию только в ConfigMap chains-config, и она не будет синхронизирована с ресурсом TektonChains, конфигурация может быть потеряна.
Когда конфигурация в TektonConfig изменяется или по какой-либо другой причине происходит повторное согласование, конфигурация в ConfigMap chains-config будет перезаписана.
Однако некоторые продвинутые настройки поддерживаются только в ConfigMap chains-config и не могут быть настроены в TektonConfig из-за webhook валидации.
Если вы столкнулись с этой проблемой, необходимо отключить автоматическое развертывание Chains через TektonConfig и вручную создать ресурс TektonHub.
Ниже приведена простая демонстрация различных способов настройки Chains.
Конфигурация в ConfigMap chains-config
Пример ConfigMap chains-config:
Булевы значения представлены строками, например "true" или "false".
Объяснение полей YAML
artifacts.oci.format: Формат аттестаций.artifacts.oci.storage: Хранилище для аттестаций.artifacts.pipelinerun.format: Формат аттестаций для PipelineRuns.artifacts.pipelinerun.storage: Хранилище для аттестаций PipelineRuns.artifacts.taskrun.format: Формат аттестаций для TaskRuns.artifacts.taskrun.storage: Хранилище для аттестаций TaskRuns.
Конфигурация в TektonConfig
В ресурсе TektonConfig конфигурация Chains примерно следующая:
Булевы значения имеют исходный тип, например true или false.
Объяснение полей YAML
spec.chain: Этот раздел содержит конфигурацию Chains.disabled: Отключить Chains или нет.- Эта настройка уникальна для TektonConfig и отсутствует в TektonChains.
generateSigningSecret: Генерировать ли секрет для подписи.- Эта настройка уникальна для TektonConfig и отсутствует в TektonChains.
controllerEnvs: Переменные окружения для контроллера Tekton Chains.- Эта настройка уникальна для TektonConfig и отсутствует в TektonChains.
name: Имя переменной окружения.value: Значение переменной окружения.
options: Опции для контроллера Tekton Chains.- Эта настройка уникальна для TektonConfig и отсутствует в TektonChains.
deployments.tekton-chains-controller: Опции деплоя контроллера Tekton Chains.spec.template.spec.containers.env.SIGSTORE_ID_TOKEN: ID токен для контроллера Tekton Chains.
- Более подробную информацию можно найти в Additional fields as options
- Следующие настройки также существуют в
TektonChainsи в конечном итоге синхронизируются в ConfigMapchains-config.artifacts.oci.formatartifacts.oci.storageartifacts.pipelinerun.formatartifacts.pipelinerun.storageartifacts.taskrun.formatartifacts.taskrun.storagestorage.oci.repository.insecuresigners.x509.fulcio.addresssigners.x509.fulcio.issuertransparency.enabledtransparency.url
Конфигурация TaskRun
Объяснение
slsa/v1является псевдонимомin-totoдля обратной совместимости.- Если хранилище —
oci, аттестации будут храниться рядом с самим OCI артефактом. Дополнительную информацию см. в документации cosign. - Если хранилище —
tekton, аттестации будут храниться в аннотациях TektonTaskRun.
Конфигурация PipelineRun
Аналогично TaskRun, можно настроить подпись и хранение PipelineRun.
- Если хранилище —
oci, аттестации будут храниться рядом с самим OCI артефактом. Дополнительную информацию см. в документации cosign. - Если хранилище —
tekton, аттестации будут храниться в аннотациях TektonPipelineRun.
Конфигурация OCI
- Если хранилище —
oci, аттестации будут храниться рядом с самим OCI артефактом. Дополнительную информацию см. в документации cosign. - Если хранилище —
tekton, аттестации будут храниться в аннотациях TektonTaskRunилиPipelineRun.
Конфигурация хранилища
Chains поддерживает несколько бэкендов хранения для аттестаций и подписей. Ниже перечислены некоторые из наиболее распространённых, для более подробной настройки смотрите Storage Configuration
Объяснение
- Если ваш OCI репозиторий использует самоподписанный сертификат, необходимо установить
storage.oci.repository.insecureвtrue, чтобы разрешить небезопасное соединение.
Конфигурация функций Sigstore
Transparency Log
Примечание: Если transparency.enabled установлен в manual, тогда в журнал прозрачности будут загружаться только TaskRuns и PipelineRuns с аннотацией: