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

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

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

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

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

Необходимые компоненты

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

Мы используем метрики Piggy в качестве примера приложения службы Майкрософт и выполните те же действия, что и в кратком руководстве. Запуск приложения 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. Настройте сервер конфигурации. Не забудьте заменить заполнитель <your GitHub id> реальным значением идентификатора 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. Создайте три микрослужбы: gateway, 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. Выберите Manage Jenkins (Управление Jenkins).

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

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

    Если этих подключаемых модулей нет в списке, перейдите на вкладку Installed (Установленные) и проверьте, установлены ли они.

  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 выберите Credentials (Учетные данные)>System (Система). Затем выберите Global credentials (unrestricted) (Глобальные учетные данные (неограниченные)).

  3. Щелкните Добавление учетных данных.

  4. Выберите тип учетных данных Субъект-служба Microsoft Azure.

  5. Введите значения в следующие поля:

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

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

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

  1. Установите SSH-подключение к контроллеру Jenkins.

  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 (субъект-служба Azure) правильным идентификатором, если это значение отличается от того, которое вы указали при добавлении учетных данных в 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 (Конвейер). Щелкните OK.

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

  4. Для параметра Definition (Определение) выберите значение Pipeline script from SCM (Сценарий конвейера из SCM).

  5. Для параметра SCM выберите значение Git.

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

  7. Для описатель ветви (черный для any)выберите /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-адресу приложения и убедитесь, что приложение обновлено.

Updated Piggy Metrics

Очистка ресурсов

Удалите ресурсы, созданные в рамках этой статьи, если они вам больше не нужны.

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

Следующие шаги