Использование Maven Connector в качестве зеркала Maven Registry
Использование Maven Connector в качестве зеркала Maven Registry позволяет использовать Maven maven registry как зеркало при выполнении операций mvn.
Требования
- Kubernetes кластер с установленной системой Connectors (компоненты Operator, ConnectorsCore и ConnectorsMaven). Подробнее об установке этих компонентов см. в Installation Guide.
- Адрес и учетные данные maven registry, который должен поддерживать использование в качестве зеркала, например maven central, proxy-тип maven репозитория, размещенного в nexus и т.п.
- Базовые знания Kubernetes и Maven
Обзор процесса
Необходимо создать maven connector, указав в качестве адреса адрес maven registry и установив параметр useAsMirror в значение true.
Затем создать job, который выполняет mvn package через этот connector.
Примечание:
- Maven registry должен поддерживать использование в качестве зеркала, например maven central, proxy-тип maven репозитория, размещенного в nexus и т.п.
Пошаговые действия
Шаг 1: Создание Namespace
Создайте отдельный namespace для этой демонстрации:
kubectl create ns connectors-maven-demo
Шаг 2: Создание Maven Connector
Создайте ресурс maven connector, установите spec.address в адрес maven registry и параметр useAsMirror в значение true.
Более подробную информацию о создании и настройке connectors смотрите в Connectors Quick Start Guide.
cat <<EOF | kubectl apply -n connectors-maven-demo -f -
apiVersion: connectors.alauda.io/v1alpha1
kind: Connector
metadata:
name: maven-mirror-connector
spec:
connectorClassName: maven
address: https://nexus.example.com/repository/maven-public # Замените на адрес вашего proxy-репозитория Maven, откуда будут скачиваться jar-файлы.
params:
- name: useAsMirror
value: "true" # Установите "true" для использования maven registry в качестве зеркала
auth:
name: basicAuth
EOF
Проверьте, что connector находится в статусе "Ready":
kubectl get connector maven-mirror-connector -n connectors-maven-demo
Вывод должен быть следующим:
NAME CLASS ADDRESS READY REASON AGE
maven-connector maven https://nexus.example.com/repository/maven-snapshots True 10s
Шаг 3: Создание Job для выполнения mvn package
Создайте job, который использует connector для выполнения mvn package:
cat <<'EOF' | kubectl apply -n connectors-maven-demo -f -
apiVersion: batch/v1
kind: Job
metadata:
name: mvn-package
spec:
backoffLimit: 0
template:
spec:
restartPolicy: Never
containers:
- name: mvn
image: maven:3.9.11-eclipse-temurin-24-alpine # Замените на ваш образ с Maven
imagePullPolicy: IfNotPresent
env:
- name: MAVEN_OPTS
value: -Dmaven.resolver.transport=wagon # Подробнее: https://maven.apache.org/guides/mini/guide-resolver-transport.html#switching-between-transports
command:
- "sh"
- "-c"
- |
set -ex
mkdir -p ~/.m2
cp /opt/maven/settings.xml ~/.m2/settings.xml
keytool -importcert -noprompt \
-trustcacerts \
-keystore $JAVA_HOME/lib/security/cacerts \
-storepass changeit \
-alias corp-ca \
-file /opt/maven/ca.cert
echo "Генерация проекта с помощью maven archetype"
cd /tmp
mvn archetype:generate -DgroupId=com.example -DartifactId=HelloWorldApp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
cd HelloWorldApp/
echo "Упаковка проекта"
mvn package
volumeMounts:
- name: settings
mountPath: /opt/maven
volumes:
- name: settings
csi:
readOnly: true
driver: connectors-csi
volumeAttributes:
connectors: "maven-mirror-connector"
configuration.names: "settings"
EOF
Шаг 4: Проверка выполнения
Проверьте логи job, чтобы убедиться, что операции mvn package выполнены успешно и jar-файлы скачиваются с зеркала maven registry при выполнении mvn package:
kubectl logs -f job/mvn-package -n connectors-maven-demo
Подождите несколько минут, вы должны увидеть успешное завершение операции mvn package и скачивание jar-файлов с maven registry, указанного в адресе connector.
Пример вывода:
Downloaded from connectors-mirror: https://nexus.example.com/repository/maven-public/org/apache/commons/commons-compress/1.26.1/commons-compress-1.26.1.jar (1.1 MB at 386 kB/s)
Downloaded from connectors-mirror: https://nexus.example.com/repository/maven-public/commons-codec/commons-codec/1.16.1/commons-codec-1.16.1.jar (365 kB at 126 kB/s)
Downloaded from connectors-mirror: https://nexus.example.com/repository/maven-public/com/github/luben/zstd-jni/1.5.5-11/zstd-jni-1.5.5-11.jar (6.8 MB at 1.7 MB/s)
[INFO] Building jar: /tmp/HelloWorldApp/target/HelloWorldApp-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42.678 s
[INFO] Finished at: 2025-09-02T23:14:46Z
[INFO] ------------------------------------------------------------------------