Использование NPM Connector в Tekton Task
Использование NPM Connector в Tekton Tasks позволяет централизованно управлять доступом к npm registry и выполнять операции с пакетами без секретов во время выполнения task.
В этом документе показано, как использовать возможность нескольких connector в одном TaskRun для:
- загрузки зависимостей из зеркального registry
- публикации пакетов в целевой registry
Содержание
Требования к Tekton TaskСценарий с несколькими ConnectorПодготовка ConnectorПример TaskRun сnodejs:0.1Пример CA BundleИспользование ResourceInterface в интеграции PipelineДополнительная информацияТребования к Tekton Task
Не все Tekton Tasks могут использовать NPM Connector.
NPM Connector внедряет временную конфигурацию registry через Connectors CSI Driver. Он предоставляет конфигурации npmrc и yarnrc, которые генерируют .npmrc, .yarnrc.yml и ca.crt.
Поэтому Tekton Tasks должны соответствовать следующим требованиям:
- поддерживать монтирование файла
.npmrcчерез Workspace - поддерживать монтирование CA certificate через Workspace (требуется для HTTPS repositories в режиме forward-proxy MITM)
Task nodejs из catalog (0.1) уже поддерживает эти workspaces:
npm-config: workspace конфигурации package managerca-bundle: custom CA workspace
Сценарий с несколькими Connector
Чтобы установить зависимости из одного registry и опубликовать их в другом registry в рамках одного TaskRun, подготовьте два NPM connector:
npm-mirror-connector: установитеspec.params.registryType=mirrornpm-publish-connector: установитеspec.params.registryType=publish
Когда оба connector смонтированы через volumeAttributes.connectors, конфигурация NPM формируется с таким поведением:
- при загрузке зависимостей приоритет отдается connector с
registryType=mirror - для
nodejs:0.1endpoint публикации управляется черезpublishRepository; используйте адрес connector сregistryType=publishкак значениеpublishRepository
Перед использованием нескольких connector в одном CSI volume включите enable-multi-connector в connectors-config.
Подготовка Connector
Пример пары connector:
Пример TaskRun с nodejs:0.1
После того как оба connector готовы, можно напрямую ссылаться на встроенный task nodejs.
В этом примере:
npm ciразрешает зависимости, используя сформированные настройки registry из connector mirrorpublishRepositoryзапускаетnpm publish --registry ...в tasknodejscaFileName: ca.crtуказываетnodejs:0.1загрузить сертификат, сгенерированный NPM connector, из workspaceca-bundle
Пример CA Bundle
В режиме forward-proxy MITM весь трафик к HTTPS npm repository проходит через connectors-proxy и должен доверять CA proxy.
Поэтому, когда dependency или publish repository использует https://, всегда монтируйте ca-bundle и задавайте caFileName как ca.crt.
В этой схеме ca.crt формируется NPM connector и используется nodejs:0.1 через workspace ca-bundle, поэтому и загрузка зависимостей, и публикация пакетов могут успешно обращаться к HTTPS repositories.
Использование ResourceInterface в интеграции Pipeline
Если вы интегрируете connector из Pipeline UI вместо ручного задания полей CSI, используйте ResourceInterface NPMRepository.
Типичный поток использования:
- В Pipeline Integration выберите категорию интерфейса
NPMRepository. - Выберите основной connector с
spec.params.registryType=publish, затем добавьте другие connector, например connectorregistryType=mirror, к тому же элементу интеграции. Это обеспечивает согласованность выбора connector с последующим выбором параметраpublishRepositoryв task. - Привяжите workspaces интеграции к workspaces
npm-configиca-bundletask.
Во время выполнения ResourceInterface формирует привязки workspace connector за вас:
npm-configмонтирует объединенную конфигурацию из выбранных connector (multi-connector)ca-bundleмонтирует конфигурацию сертификата для доверия TLS
Это означает, что пользователи могут продолжать использовать nodejs:0.1 напрямую, а выбор connector и формирование workspace будут делегированы Pipeline Integration.
Подробности см. в ResourceInterface и Pipeline Integration.