Аутентификация для Chains
Содержание
ОбзорАутентификация OCI RegistryСоздание учетных данных registryСоздание Secret на основе существующих учетных данныхСоздание Secret с указанием учетных данных в командной строкеНастройка учетных данных с использованием podИспользование Pod TemplateИспользование ServiceAccountFulcio Authentication для Keyless SigningБазовая настройкаПользовательская конечная точка FulcioСсылкиОбзор
Аутентификация должна быть настроена, чтобы использовать следующие возможности Chains:
- Отправка подписей в OCI registry после подписывания образа
- Использование Fulcio для получения Signing Certificates при использовании подписи Keyless
Аутентификация OCI Registry
Чтобы отправлять данные в OCI registry, контроллер Chains будет искать учетные данные в двух местах:
- В pod, выполняющем вашу Task
- В service account, настроенном для запуска вашей Task
Создание учетных данных registry
Создание Secret на основе существующих учетных данных
Если вы уже выполняли podman login, можно скопировать учетные данные, сохраненные в config.json, в Kubernetes.
Убедитесь, что для хранения учетных данных не используется внешнее хранилище учетных данных, например нативный keychain операционной системы, и что config.json имеет следующий формат:
Создайте secret с config.json:
Создание Secret с указанием учетных данных в командной строке
Сначала вам потребуется доступ к учетным данным для вашего registry (в этом примере они находятся в файле credentials.json). Затем создайте Kubernetes secret типа kubernetes.io/dockerconfigjson:
Задайте ключ config.json
Настройка учетных данных с использованием pod
Использование Pod Template
Tekton поддерживает указание Pod template для настройки pod, в котором выполняется ваша Task. Вы должны передать Pod template при запуске Task через cli или встроить его в TaskRun.
Пример TaskRun, настроенного с secret registry-credentials:
Использование ServiceAccount
Предоставьте service account доступ к secret:
Теперь Chains имеет права на push для любых TaskRun, выполняющихся под service account $SERVICE_ACCOUNT_NAME.
Учитываются также secrets в атрибуте imagePullSecrets у ServiceAccount. Однако другие компоненты Tekton могут этого не делать. Рекомендуемым подходом является атрибут secrets.
Fulcio Authentication для Keyless Signing
- Для этого метода требуется доступ к Internet из среды выполнения.
- Если вы развернули частные службы Fulcio, вы также можете использовать эти возможности, скорректировав соответствующие настройки.
- Развертывание частных служб Fulcio не входит в сферу действия этого документа; обратитесь к соответствующей документации.
Базовая настройка
Стандартное развертывание будет работать с публичным Fulcio, если оно установлено в кластер EKS или GKE. Вам нужно только добавить следующее в раздел данных ConfigMap chains-config в namespace tekton-chains:
Пользовательская конечная точка Fulcio
Если вы используете собственный экземпляр Fulcio, необходимо настроить Fulcio соответствующим образом. Также нужно указать Chains на ваш экземпляр fulcio, добавив в chains-config следующее: