Maven Connector
Maven Connector — это платформонезависимый коннектор, который можно использовать для подключения к любому Maven-реестру.
Вы можете использовать Maven Connector для безопасного выполнения операций maven в CICD-пайплайнах или использовать его в kubernetes-ворклоадах для выполнения операций maven без учётных данных.
Кроме того, вы можете централизованно управлять конфигурациями доступа к maven в разных пространствах имён, избегая необходимости повторять учётные данные maven в каждом пространстве имён.
Содержание
OverviewIntegration RequirementsCreating a simple Maven connectorFields ReferenceCapabilities of Maven ConnectorAuthenticationИспользование базовой аутентификацииТребуемые разрешения для учётных данныхProxy и конфигурация settings.xmlАдрес проксиКонфигурационный файл settings.xmlФайл ca.certИспользование Connectors CSI Driver для монтирования settings.xml и ca.certFurther ReadingReferencesOverview
В этом документе рассматриваются:
- Требования к интеграции: Предварительные условия для целевых Maven-реестров
- Создание Maven Connector
- Расширенные возможности: Возможности прокси и настройки Maven Connector
Integration Requirements
Требования к Maven-реестрам
- Maven-реестр должен поддерживать операции maven, такие как
mvn deploy,mvn install,mvn packageи т. д. Он должен быть одним из следующих типов: maven snapshots repository, maven release repository или maven proxy repository. Например, maven central, maven-репозиторий, размещённый на nexus, artifactory и т. п.
Существуют некоторые предварительные условия для клиента, использующего Maven Connector:
Требования к клиенту
-
Клиент должен доверять сертификату прокси-сервера коннектора, поэтому необходимо импортировать файл
ca.certв truststore клиента перед выполнением операций mvn. Обычно для этого можно использовать командуkeytool -importcert. Например: -
Клиент mvn должен использовать transport=wagon для выполнения операций mvn. Это можно сделать, добавив параметр
-Dmaven.resolver.transport=wagonк команде mvn или установив переменную окруженияMAVEN_OPTSв значение-Dmaven.resolver.transport=wagon.
Creating a simple Maven connector
Пример создания базового Maven Connector:
Fields Reference
spec.connectorClassName:
maven (константа), указывает имя ConnectorClass для интеграции с Maven.
spec.address:
Адрес целевого Maven-реестра, например: https://nexus.example.com/repository/maven-snapshots или https://repo.maven.apache.org/maven2. Он должен быть одним из следующих типов: maven snapshots repository, maven release repository или maven proxy repository.
spec.auth:
Указывает метод аутентификации для maven-реестра
-
spec.auth.name: должен бытьbasicAuthдля maven connector. -
spec.auth.secretRef: указывает секрет, содержащий информацию для аутентификации в maven-реестре, секрет должен быть создан в том же пространстве имён, что и коннектор. Если ваш maven-реестр не требует аутентификации, это поле можно опустить.
Дополнительные поля метаданных:
-
cpaas.io/description: Описание для maven connector, например:
Capabilities of Maven Connector
Authentication
Maven Connector поддерживает следующие типы аутентификации:
basicAuth: аутентификация по имени пользователя и паролю, соответствующий тип секрета:kubernetes.io/basic-auth
Использование базовой аутентификации
Пример:
Если секрет указан неверно, в поле status.conditions Maven Connector отобразит сообщение об ошибке.
Для подробной информации о статусе см. Connector Status Documentation.
Если Maven-реестр не требует аутентификации, поле secretRef можно опустить:
Требуемые разрешения для учётных данных
Необходимые разрешения для настроенных учётных данных зависят от того, как вы планируете их использовать в Pods/Pipelines.
Например:
- Операции с пакетами: если вам нужно только скачивать зависимости с помощью
mvn packageилиmvn install, учётные данные должны иметь права только на чтение целевого Maven-репозитория. - Операции с пакетами и деплоем: если необходимо публиковать артефакты с помощью
mvn deploy, учётные данные должны иметь права на чтение и запись в целевом репозитории.
Для обеспечения безопасности рекомендуется создавать учётные данные с минимально необходимыми правами. При необходимости дополнительных привилегий создавайте отдельные Connectors с более привилегированными секретами и используйте изоляцию по пространствам имён для контроля доступа пользователей к каждому Connector.
Proxy и конфигурация settings.xml
Чтобы предоставить клиентам возможность доступа к maven-реестру без учётных данных, Maven Connector предоставляет прокси-сервер, который автоматически внедряет информацию для аутентификации.
Клиенты могут использовать этот прокси-сервер для доступа к maven-реестру без необходимости настраивать учётные данные на стороне клиента.
Для упрощения использования класс Maven Connector предоставляет файлы settings.xml, которые можно монтировать в Pods через CSI. В Pod при выполнении операций maven прокси-сервис автоматически внедряет информацию для аутентификации.
Адрес прокси
При создании Connector система автоматически создаёт прокси-сервис для целевого maven-реестра.
Адрес прокси записывается в status.proxy.httpAddress:
Пример:
Конфигурационный файл settings.xml
Maven Connector предоставляет следующую конфигурацию:
settings.xml:
- Предоставляет конфигурационный файл
settings.xml. В сочетании с connector-csi-driver этот файл монтируется в Pod, что позволяет обращаться к maven-реестру через прокси без необходимости настройки учётных данных на стороне клиента.
Пример конфигурационного файла, сгенерированного в Pod:
Для подробностей о работе прокси см. How It Works в руководстве Quick Start.
Файл ca.cert
Maven Connector предоставляет файл ca.cert, который можно монтировать в Pod через Connector CSI Driver. Он используется для доверия прокси-серверу коннектора, поэтому файл ca.cert необходимо импортировать в truststore клиента перед выполнением операций mvn.
Использование Connectors CSI Driver для монтирования settings.xml и ca.cert
Maven Connector предоставляет файлы settings.xml и ca.cert, которые можно монтировать в Pod через Connector CSI Driver.
Пример:
Описание параметров:
csi.readOnly: фиксированное значениеtruecsi.driver: драйвер Connector CSI, фиксированное значениеconnectors-csicsi.volumeAttributes: атрибуты CSI томаconnector.name: имя Maven Connectorconnector.namespace: пространство имён Maven Connector; если не указано, используется пространство имён Podconfiguration.names: имя конфигурации, предоставляемое Maven Connector. Как указано выше, поддерживаетсяsettings.
Для подробной информации о том, как использовать файл settings в Pod с помощью connectors-csi-driver, см. Using Maven Connectors in kubernetes jobs
Further Reading
- Using Maven Connectors as Distribution Management Repository
- Using Maven Connectors as Maven Registry Mirror
- Using Maven Connectors in Tekton Pipelines