NPM Connector
NPM Connector — это платформонезависимый коннектор, который можно использовать для подключения к любому NPM-реестру.
Вы можете использовать NPM Connector для безопасного выполнения операций NPM в CICD-пайплайнах или применять его в kubernetes-ворклоадах для выполнения операций NPM без необходимости наличия учетных данных.
Кроме того, вы можете централизованно управлять конфигурациями доступа к NPM по разным namespace, избегая необходимости повторять учетные данные NPM в каждом namespace.
Содержание
OverviewIntegration RequirementsCreating a simple NPM connectorFields ReferenceCapabilities of NPM ConnectorAuthenticationТребуемые права для учетных данныхПрокси и конфигурация NPM Connector с файлами npmrc и yarnrc.ymlАдрес проксиКонфигурационный файл .npmrcКонфигурационный файл .yarnrc.ymlФайл ca.certИспользование Connectors CSI Driver для монтирования файлов .npmrc и .yarnrc.ymlFurther ReadingReferencesOverview
В этом документе рассматриваются:
- Integration Requirements: Предварительные требования к целевым NPM-реестрам
- Creating NPM connector
- Advanced Features: Возможности прокси и настройки NPM Connector
Integration Requirements
Требования к NPM-реестрам
- NPM-реестр должен поддерживать NPM Registry API
Creating a simple NPM connector
Как создать базовый NPM Connector:
Fields Reference
spec.connectorClassName:
npm (константа), указывает имя ConnectorClass для интеграции с NPM.
spec.address:
Адрес целевого NPM-реестра, например: https://registry.npmjs.org.
При использовании Nexus в качестве npm-реестра необходимо указать адрес репозитория, например: https://nexus.example.com/repository/npm-public.
spec.auth (необязательно):
Указывает метод аутентификации для NPM-реестра
-
spec.auth.name: должен бытьbasicAuthдля NPM Connector. -
spec.auth.secretRef: указывает секрет, содержащий данные для аутентификации в NPM-реестре, секрет должен быть создан в том же namespace, что и коннектор. Если ваш NPM-реестр не требует аутентификации, это поле можно опустить.
Необязательные поля метаданных:
-
cpaas.io/description: Описание для NPM Connector, например:
spec.params (необязательно):
NPM Connector поддерживает параметры, которые используются для управления поведением конфигурации коннектора.
spec.params[].name: Имя параметра, должно совпадать с именем параметра, определённым в соответствующемConnectorClass.spec.params[].value: Значение параметра. Тип значения должен соответствовать типу параметра, определённому вConnectorClass.
Поддерживаемые параметры:
strict-ssl: указывает, будет ли в файлах .npmrc/.yarnrc.yml для NPM-реестра записан параметрstrict-ssl. Значение по умолчанию —true. Поддерживаются значенияtrueиfalse.
Пример:
Capabilities of NPM Connector
Authentication
NPM Connector поддерживает следующие типы аутентификации:
basicAuth: аутентификация по имени пользователя и паролю, соответствующий тип секрета:kubernetes.io/basic-auth
Пример:
Для получения полной информации о статусе см. Connector Status Documentation.
Если NPM-реестр не требует аутентификации, поле secretRef можно опустить:
Требуемые права для учетных данных
Необходимые права для настроенных учетных данных зависят от того, как вы планируете их использовать в Pods/Pipelines.
Например:
- Операции с пакетами: если вам нужно только скачивать зависимости с помощью
npm install, учетные данные должны иметь права только на чтение целевого NPM-репозитория. - Операции публикации и развертывания: если необходимо публиковать артефакты с помощью
npm publish, учетные данные должны иметь права на чтение и запись для целевого репозитория.
Для обеспечения безопасности рекомендуется создавать учетные данные с минимально необходимыми правами. При необходимости дополнительных привилегий создавайте отдельные Connectors с более привилегированными секретами и используйте изоляцию namespace для контроля доступа пользователей к каждому Connector.
Прокси и конфигурация NPM Connector с файлами npmrc и yarnrc.yml
Чтобы предоставить клиентам возможность доступа к NPM-реестру без учетных данных, NPM Connector предоставляет прокси-сервер, который автоматически внедряет информацию для аутентификации.
Клиенты могут использовать этот прокси-сервер для доступа к NPM-реестру без необходимости настраивать учетные данные на стороне клиента.
Для упрощения использования класс коннектора предоставляет файлы .npmrc и .yarnrc.yml, которые можно монтировать в Pods через CSI. В Pod при выполнении операций NPM прокси-сервис автоматически внедряет информацию для аутентификации.
Файл .yarnrc.yml поддерживается только в версии Yarn 2.x.
Адрес прокси
При создании Connector система автоматически разворачивает прокси-сервис для целевого NPM-реестра.
Адрес прокси записывается в status.proxy.httpAddress:
Пример:
Конфигурационный файл .npmrc
NPM Connector предоставляет следующую конфигурацию:
.npmrc:
- Предоставляет конфигурационный файл
.npmrc. В сочетании с connector-csi-driver этот файл монтируется в Pod, что позволяет обращаться к NPM-реестру через прокси без необходимости настраивать учетные данные на стороне клиента.
Пример конфигурационного файла, сгенерированного в Pod:
Конфигурационный файл .yarnrc.yml
-
Предоставляет конфигурационный файл
.yarnrc.yml. В сочетании с connector-csi-driver этот файл монтируется в Pod, что позволяет обращаться к NPM-реестру через прокси без необходимости настраивать учетные данные на стороне клиента.
Подробности о механике прокси см. в разделе How It Works в руководстве Quick Start.
При использовании yarn с реестром по HTTPS необходимо настроить доверие к сертификату Connector Proxy через переменные окружения, иначе возникнут ошибки сертификата.
Настройка сертификата для yarn:
Файл ca.cert
NPM Connector также предоставляет файл ca.cert, содержащий CA-сертификат Connector Proxy. Этот файл можно смонтировать в Pod через Connector CSI Driver для установления доверия TLS при доступе к прокси по HTTPS.
Использование Connectors CSI Driver для монтирования файлов .npmrc и .yarnrc.yml
NPM Connector предоставляет файлы .npmrc, .yarnrc.yml и ca.cert, которые можно монтировать в Pod через Connector CSI Driver.
Пример:
Описание параметров:
csi.readOnly: фиксированное значениеtruecsi.driver: драйвер Connector CSI, фиксированное значениеconnectors-csi.csi.volumeAttributes: атрибуты CSI Volumeconnector.name: имя NPM Connectorconnector.namespace: namespace NPM Connector; если не указано, используется namespace Podconfiguration.names: имя конфигурации, предоставляемое NPM Connector. Поддерживаютсяnpmrcиyarnrc.
Подробную информацию о том, как использовать файлы .npmrc и .yarnrc.yml в Pod с помощью connectors-csi-driver, смотрите в разделе Using NPM Connectors in kubernetes jobs