Поделиться через


Руководство. Развертывание приложений в Azure Spring Apps с помощью Jenkins и Azure CLI

Замечание

Azure Spring Apps — это новое имя службы Azure Spring Cloud. Хотя служба имеет новое имя, вы увидите старое имя в некоторых местах на некоторое время, так как мы работаем над обновлением ресурсов, таких как снимки экрана, видео и схемы.

Azure Spring Apps — это полностью управляемая разработка микрослужб с встроенным обнаружением служб и управлением конфигурацией. Служба упрощает развертывание приложений микрослужб на основе Spring Boot в Azure. В этом руководстве показано, как использовать Azure CLI в Jenkins для автоматизации непрерывной интеграции и доставки (CI/CD) для Azure Spring Apps.

При работе с этим руководством вы выполните следующие задачи:

  • Подготовка экземпляра службы и запуск приложения Java Spring
  • Подготовка сервера Jenkins
  • Использование Azure CLI в конвейере Jenkins для создания и развертывания приложений микрослужб

Предпосылки

Подготовка экземпляра службы и запуск приложения Java Spring

Мы используем Piggy Metrics в качестве примера приложения службы Microsoft и следуем тем же шагам, что и в Быстром старте: Запуск приложения Java Spring с помощью Azure CLI для подготовки экземпляра службы и настройки приложений. Если вы уже прошли тот же процесс, перейдите к следующему разделу. В противном случае приведены команды Azure CLI. Дополнительные сведения см. в кратком руководстве: Запуск приложения Java Spring с использованием Azure CLI.

Локальный компьютер должен соответствовать тому же предварительным требованиям, что и сервер сборки Jenkins. Убедитесь, что установлены следующие компоненты для сборки и развертывания приложений микрослужб:

  1. Установите расширение Azure Spring Apps:

    az extension add --name spring
    
  2. Создайте группу ресурсов для хранения службы Azure Spring Apps:

    az group create --location eastus --name <resource group name>
    
  3. Подготовьте экземпляр Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. Сделайте форк репозитория Piggy Metrics в вашу собственную учетную запись GitHub. На локальном компьютере клонируйте репозиторий в каталоге с именем source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Настройте сервер конфигурации. Замените <идентификатор> GitHub правильным значением.

    az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
    
  6. Создайте проект:

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Создайте три микрослужбы: шлюз, auth-service и account-service:

    az spring app create --n gateway -s <service name> -g <resource group name>
    az spring app create --n auth-service -s <service name> -g <resource group name>
    az spring app create --n account-service -s <service name> -g <resource group name>
    
  8. Развертывание приложений:

    az spring app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar
    az spring app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar
    az spring app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jar
    
  9. Назначьте общедоступную конечную точку шлюзу.

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Запросите приложение шлюза, чтобы получить URL-адрес, чтобы убедиться, что приложение запущено.

    az spring app show --name gateway | grep url
    
  11. Перейдите по URL-адресу, предоставленному предыдущей командой, чтобы запустить приложение PiggyMetrics.

Подготовка сервера Jenkins

В этом разделе описана подготовка сервера Jenkins к выполнению сборки, которая подходит для тестирования. Однако из-за последствий безопасности следует использовать агент виртуальной машины Azure или агент контейнеров Azure для создания агента в Azure для запуска сборок.

Установка плагинов

  1. Войдите на сервер Jenkins.

  2. Выберите "Управление Jenkins".

  3. Выберите "Управление подключаемыми модулями".

  4. На вкладке "Доступно" выберите следующие подключаемые модули:

    Если эти подключаемые модули не отображаются в списке, перейдите на вкладку "Установленные ", чтобы узнать, уже ли они установлены.

  5. Чтобы установить подключаемые модули, нажмите кнопку "Скачать сейчас" и установите после перезагрузки.

  6. Перезапустите сервер Jenkins, чтобы завершить установку.

Добавьте учетные данные служебного субъекта Azure в хранилище учетных данных Jenkins

  1. Для развертывания в Azure требуется учетная запись службы Azure. Дополнительные сведения см. в разделе "Создание субъекта-службы" в руководстве по развертыванию в Службе приложений Azure. Выходные данные из az ad sp create-for-rbac выглядят примерно так:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. На панели мониторинга Jenkins выберите "Система учетных> данных". Затем выберите глобальные учетные данные (неограниченные).

  3. Выберите "Добавить учетные данные".

  4. Выберите сервисный принципал Microsoft Azure как тип.

  5. Укажите значения для следующих полей:

    • Идентификатор подписки: идентификатор подписки Azure
    • Идентификатор клиента: идентификатор приложения главного участника
    • Секрет клиента: пароль служебной учётной записи
    • Идентификатор клиента: идентификатор клиента Майкрософт
    • Среда Azure. Выберите соответствующее значение для вашей среды. Например, используйте Azure для Глобальной службы Azure
    • Идентификатор: задать как azure_service_principal. Этот идентификатор используется на следующем шаге в этой статье
    • Описание. Это значение является необязательным, но рекомендуется с точки зрения документации или обслуживания.

Установка расширения Maven и Azure CLI spring

Пример конвейера использует Maven для сборки и Azure CLI для развертывания на экземпляре службы. При установке Jenkins создается учетная запись администратора с именем jenkins. Убедитесь, что у пользователя jenkins есть разрешение на запуск расширения spring.

  1. Подключитесь к контроллеру Jenkins через SSH.

  2. Установите Maven.

    sudo apt-get install maven
    
  3. Убедитесь, что Azure CLI установлен путем ввода az version. Если Azure CLI не установлен, см. статью "Установка Azure CLI".

  4. Перейдите к jenkins пользователю:

    sudo su jenkins
    
  5. Установите расширение Spring:

    az extension add --name spring
    

Создайте Jenkinsfile

  1. В собственном репозитории — https://github.com/your_github_id/piggymetrics, создайте файл Jenkinsfile в корневой папке.

  2. Обновите файл следующим образом. Замените значения <имени> группы ресурсов и <имени> службы. Замените azure_service_principal правильным идентификатором, если при добавлении учетных данных в Jenkins используется другое значение.

        node {
          stage('init') {
            checkout scm
          }
          stage('build') {
            sh 'mvn clean package'
          }
          stage('deploy') {
            withCredentials([azureServicePrincipal('azure_service_principal')]) {
              // Log in to Azure
              sh '''
                az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
                az account set -s $AZURE_SUBSCRIPTION_ID
              '''  
              // Set default resource group name and service name. Replace <resource group name> and <service name> with the right values
              sh 'az config set defaults.group=<resource group name>'
              sh 'az config set defaults.spring=<service name>'
    
              // Deploy applications
              sh 'az spring app deploy -n gateway --jar-path ./gateway/target/gateway.jar'
              sh 'az spring app deploy -n account-service --jar-path ./account-service/target/account-service.jar'
              sh 'az spring app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar'
              sh 'az logout'
            }
          }
        }
    
  3. Сохраните и зафиксируйте изменение.

Создание задания

  1. На панели мониторинга Jenkins выберите новый элемент.

  2. Укажите имя, Deploy-PiggyMetrics для задания и выберите Pipeline. Нажмите кнопку "OК".

  3. Перейдите на вкладку "Конвейер".

  4. Для определения выберите сценарий конвейера из SCM.

  5. Для SCM выберите Git.

  6. Введите URL-адрес вашего форкнутого репозитория на GitHub: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git

  7. Для спецификатора ветви (чёрный для обозначения 'любая') выберите /Azure.

  8. Для пути к скрипту выберите Jenkinsfile.

  9. Нажмите кнопку "Сохранить"

Проверка и запуск задания

Перед выполнением задания измените текст в поле ввода входа, чтобы ввести идентификатор входа.

  1. В вашем репозитории откройте index.html в /gateway/src/main/resources/static/.

  2. Найдите enter your login и обновите этот текст на enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Сохраните и зафиксируйте изменение.

  4. Запустите задание в Jenkins вручную. На панели мониторинга Jenkins выберите задание Deploy-PiggyMetrics и нажмите кнопку "Создать сейчас".

После завершения задания перейдите к общедоступному gateway IP-адресу приложения и убедитесь, что приложение обновлено.

Обновленные метрики Piggy

Очистите ресурсы

При отсутствии необходимости удалите ресурсы, созданные в этой статье:

az group delete -y --no-wait -n <resource group name>

Дальнейшие шаги