Конфигурация Chains
Содержание
OverviewConfigurationКонфигурация в ConfigMapchains-configКонфигурация в TektonConfigКонфигурация TaskRunКонфигурация PipelineRunКонфигурация OCIКонфигурация хранилищаКонфигурация функций SigstoreTransparency LogПодпись без ключей с FulcioReferencesOverview
Tekton Chains — это контроллер Kubernetes Custom Resource Definition (CRD), который позволяет управлять безопасностью вашей цепочки поставок в Tekton. В этом документе описывается, как настроить Tekton Chains.
Configuration
Конфигурация 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
Аналогично TaskRuns, вы можете настроить подпись и хранение 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 с следующей аннотацией: