• Русский
  • Быстрый старт

    Этот документ поможет вам быстро понять, как создать коннектор JFrog для подключения к экземпляру JFrog Artifactory и безопасно выполнять операции сборки Maven без прямого обращения с учетными данными.

    Мы создадим коннектор JFrog и используем его для выполнения сборки mvn с Maven-зеркалом, направленным на Maven-репозиторий JFrog Artifactory.

    Оценочное время чтения

    15 минут

    Предварительные требования

    • Kubernetes кластер с установленной системой Connectors (компоненты Operator, ConnectorsCore и ConnectorsJFrog). Подробнее об установке этих компонентов см. в Installation Guide.
    • URL и учетные данные JFrog Artifactory
    • Базовые знания Kubernetes и Maven
    • Maven-репозиторий, настроенный в вашем экземпляре JFrog Artifactory

    Обзор процесса

    ШагОперацияОписание
    1Создать NamespaceСоздать выделенный namespace для демонстрации
    2Настроить учетные данные JFrog и коннекторСоздать секрет для аутентификации и ресурс коннектора JFrog
    3Создать Maven Job с использованием зеркала JFrog MavenСоздать job, выполняющий сборку mvn через коннектор

    Шаги выполнения

    Шаг 1: Создать Namespace

    Создайте выделенный namespace для этой демонстрации:

    kubectl create ns connectors-jfrog-demo

    Шаг 2: Создать учетные данные JFrog и коннектор

    Создайте одновременно Secret с учетными данными JFrog и ресурс коннектора JFrog.

    Для более подробной информации о создании и настройке коннекторов обратитесь к Connectors Quick Start Guide.

    cat <<EOF | kubectl apply -n connectors-jfrog-demo -f -
    kind: Secret
    apiVersion: v1
    metadata:
      name: jfrog-secret
    type: kubernetes.io/basic-auth
    stringData:
      username: your-jfrog-username # Замените на ваше имя пользователя JFrog
      password: your-jfrog-password # Замените на ваш пароль JFrog или API ключ
    ---
    apiVersion: connectors.alauda.io/v1alpha1
    kind: Connector
    metadata:
      name: jfrog-connector
    spec:
      connectorClassName: jfrog
      address: https://jfrog.example.com # Замените на URL вашего JFrog Artifactory
      auth:
        name: basicAuth
        secretRef:
          name: jfrog-secret
    EOF

    Проверьте, что коннектор находится в статусе "Ready":

    kubectl get connector jfrog-connector -n connectors-jfrog-demo

    Вывод должен быть следующим:

    NAME               CLASS   ADDRESS                        READY   REASON   AGE
    jfrog-connector   jfrog   https://jfrog.example.com     True             10s

    Шаг 3: Создать Maven Job с использованием зеркала JFrog Maven

    Создайте job, который использует коннектор для выполнения операций Maven с репозиторием JFrog Artifactory в качестве зеркала:

    cat <<'EOF' | kubectl apply -n connectors-jfrog-demo -f -
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: maven-build
    spec:
      backoffLimit: 0
      template:
        spec:
          restartPolicy: Never
          containers:
          - name: maven-demo
            image: maven:3.9-eclipse-temurin-17
            imagePullPolicy: IfNotPresent
            command:
            - "sh"
            - "-c"
            - |
              set -ex
              git clone --depth 1 https://github.com/spring-projects/spring-petclinic.git demo
              cd demo
              mvn --settings /root/.m2/settings.xml dependency:resolve -q
            volumeMounts:
            - name: maven-settings
              mountPath: /root/.m2/settings.xml
              subPath: settings.xml
          volumes:
          - name: maven-settings
            csi:
              readOnly: true
              driver: connectors-csi
              volumeAttributes:
                connector.name: "jfrog-connector"
                configuration.names: "settings"
                configuration.params: '{"settings":{"mirrorRepository":"libs-release"}}'
    EOF

    Ключевые настройки:

    volumes[].volumeAttributes

    • connector.name: имя вашего коннектора JFrog
    • configuration.names: установлено в settings, что генерирует Maven-файл settings.xml, настроенный с прокси JFrog Artifactory
    • configuration.params: JSON-строка с ключами по имени конфигурации. В этом быстром старте используется settings.mirrorRepository для генерации URL зеркала Maven.
    • Другие ключи, используемые текущими шаблонами JFrog ConnectorClass: npmrc.repository, npmrc.strictSSL, yarnrc.repository, yarnrc.strictSSL, pipconf.repository и pypirc.deployRepository.

    Что происходит под капотом

    Коннектор JFrog работает следующим образом:

    1. Создает прокси-сервис, который находится между вашим клиентом и экземпляром JFrog Artifactory
    2. Внедряет информацию для аутентификации при прохождении запросов через прокси
    3. Предоставляет конфигурационные файлы (settings.xml, .npmrc, pip.conf и др.) для клиентов, чтобы выполнять операции с пакетами через прокси

    Чтобы продемонстрировать этот механизм, просмотрите сгенерированный файл settings.xml:

    cat <<EOF | kubectl apply -n connectors-jfrog-demo -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: inspect-jfrog-settings
    spec:
      restartPolicy: Never
      containers:
      - name: inspect
        image: busybox
        command: ["sleep", "3600"]
        volumeMounts:
        - name: maven-settings
          mountPath: /root/.m2/settings.xml
          subPath: settings.xml
      volumes:
      - name: maven-settings
        csi:
          readOnly: true
          driver: connectors-csi
          volumeAttributes:
            connector.name: "jfrog-connector"
            configuration.names: "settings"
            configuration.params: '{"settings":{"mirrorRepository":"libs-release"}}'
    EOF

    Просмотрите сгенерированный settings.xml:

    kubectl exec -it inspect-jfrog-settings -n connectors-jfrog-demo -- cat /root/.m2/settings.xml

    Вывод показывает Maven settings.xml с прокси, настроенным для аутентификации через коннектор:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" ...>
      <proxies>
        <proxy>
          <id>connectors-proxy</id>
          <active>true</active>
          <protocol>http</protocol>
          <host>connectors-proxy-service.connectors-system.svc.cluster.local</host>
          <port>80</port>
          <username>connectors-jfrog-demo/jfrog-connector</username>
          <password>TOKEN</password>
          <nonProxyHosts>localhost</nonProxyHosts>
        </proxy>
      </proxies>
      <mirrors>
        <mirror>
          <id>jfrog-connector-mirror</id>
          <url>https://jfrog.example.com/artifactory/libs-release</url>
          <mirrorOf>*</mirrorOf>
        </mirror>
      </mirrors>
    </settings>

    Дополнительное чтение

    После успешного выполнения операций сборки Maven с использованием коннектора JFrog вы можете:

    References