Nexus Connector
Nexus Connector — это платформонезависимый коннектор, который можно использовать для подключения к репозиториям Nexus.
С помощью Nexus Connector вы можете безопасно выполнять операции Maven, NPM и PyPI в CICD-пайплайнах или Kubernetes-ворклоадах без использования учетных данных.
Кроме того, вы можете централизованно управлять конфигурациями доступа к Nexus в разных неймспейсах, избегая необходимости повторять учетные данные Nexus в каждом неймспейсе.
Содержание
OverviewIntegration RequirementsCreating a Nexus ConnectorFields ReferenceCapabilities of Nexus ConnectorAuthenticationИспользование базовой аутентификацииТребуемые разрешения для учетных данныхProxy и конфигурационные файлыАдрес проксиMaven: конфигурация settings.xmlNPM: конфигурация .npmrcYarn: конфигурация .yarnrc.ymlPyPI Download: конфигурация pip.confPyPI Publish: конфигурация .pypircИспользование Connectors CSI Driverconfiguration.params для NexusFurther ReadingReferencesOverview
В этом документе рассматриваются:
- Требования к интеграции: предварительные условия для целевых репозиториев Nexus
- Создание Nexus Connector
- Расширенные возможности: прокси и конфигурационные файлы для Maven, NPM и PyPI
Integration Requirements
Требования к репозиторию Nexus
- Сервер Nexus должен быть доступен из кластера.
- Поддерживаемые типы репозиториев: Maven (hosted/proxy/group), NPM (hosted/proxy/group), PyPI (hosted/proxy/group).
Требования к клиенту
Для Maven-клиентов необходимо доверять сертификату прокси-сервера коннектора перед выполнением операций mvn:
Клиент mvn также должен использовать транспорт wagon:
Creating a Nexus Connector
Пример создания базового Nexus Connector:
Fields Reference
spec.connectorClassName:
nexus (константа), указывает имя ConnectorClass для интеграции с Nexus.
spec.address:
Адрес целевого сервера Nexus, например: https://nexus.example.com. Это корневой адрес сервера Nexus, а не URL конкретного репозитория.
spec.auth:
Указывает метод аутентификации для сервера Nexus.
spec.auth.name: должен бытьbasicAuthдля Nexus Connector.spec.auth.secretRef: указывает Secret с информацией для аутентификации. Секрет должен быть создан в том же неймспейсе, что и коннектор. Если сервер Nexus не требует аутентификации, это поле можно опустить.
Опциональные поля метаданных:
-
cpaas.io/description: Описание коннектора, например:
Capabilities of Nexus Connector
Authentication
Nexus Connector поддерживает следующие типы аутентификации:
basicAuth: аутентификация по имени пользователя и паролю, соответствующий тип секрета:kubernetes.io/basic-auth
Использование базовой аутентификации
Если секрет указан неверно, в поле status.conditions коннектора будет отображено сообщение об ошибке.
Для подробной информации о статусе смотрите Connector Status Documentation.
Требуемые разрешения для учетных данных
Необходимые разрешения зависят от того, как вы планируете использовать коннектор:
- Только скачивание: учетные данные требуют только права на чтение целевого репозитория.
- Загрузка/Деплой: учетные данные должны иметь права на чтение и запись целевого репозитория.
Для обеспечения безопасности рекомендуется создавать учетные данные с минимально необходимыми правами.
Proxy и конфигурационные файлы
Чтобы предоставить клиентам возможность доступа к репозиториям Nexus без учетных данных, Nexus Connector предоставляет прокси-сервер, который автоматически внедряет информацию для аутентификации.
ConnectorClass Nexus предоставляет следующие конфигурационные файлы, которые можно монтировать в Pod через Connectors CSI Driver:
Адрес прокси
При создании коннектора автоматически создается прокси-сервис для целевого сервера Nexus.
Адрес прокси записывается в status.proxy.httpAddress:
Maven: конфигурация settings.xml
Конфигурация settings предоставляет файл settings.xml и файл ca.cert, монтируемые через Connectors CSI Driver.
Пример сгенерированного settings.xml:
Опциональный параметр: mirrorRepository — репозиторий Nexus, используемый как зеркало Maven. При указании в сгенерированном settings.xml будет добавлен раздел <mirrors>, указывающий на {address}/repository/{mirrorRepository}.
Для монтирования конфигурации settings:
NPM: конфигурация .npmrc
Конфигурация npmrc предоставляет файл .npmrc для операций с пакетами NPM.
Обязательный параметр: registry — имя прокси-репозитория Nexus для NPM (например, npm-proxy).
Опциональный параметр: strictSSL — требовать ли SSL (по умолчанию: "true").
Yarn: конфигурация .yarnrc.yml
Конфигурация yarnrc предоставляет файл .yarnrc.yml для операций с пакетами Yarn.
Обязательный параметр: registry — имя прокси-репозитория Nexus для NPM.
Опциональный параметр: strictSSL — требовать ли SSL (по умолчанию: "true").
PyPI Download: конфигурация pip.conf
Конфигурация pipconf предоставляет файл pip.conf для загрузки пакетов PyPI.
Обязательный параметр: repository — имя прокси-репозитория Nexus для PyPI (например, pypi-proxy).
PyPI Publish: конфигурация .pypirc
Конфигурация pypirc предоставляет файл .pypirc для публикации пакетов PyPI.
Обязательный параметр: deployRepository — имя hosted-репозитория Nexus для PyPI (например, pypi-hosted).
Использование Connectors CSI Driver
Параметры атрибутов CSI volume:
csi.readOnly: фиксированное значениеtruecsi.driver: фиксированное значениеconnectors-csicsi.volumeAttributes:connector.name: имя Nexus Connectorconnector.namespace: неймспейс Nexus Connector; если не указан, используется неймспейс Podconfiguration.names: конфигурация для монтирования (например,settings,npmrc,yarnrc,pipconf,pypirc)configuration.params: JSON-строка с параметрами времени выполнения для каждой конфигурации (см. ниже)
Несколько конфигураций можно монтировать одновременно, разделяя имена запятыми:
configuration.params для Nexus
О формате, правилах валидации и поведении по умолчанию для configuration.params смотрите configuration.params в документации Connectors CSI Driver.
Параметры, принимаемые каждой конфигурацией Nexus: