Краткое руководство. Сборка и развертывание приложений в Azure Spring Apps

Примечание.

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

Эта статья относится к: ✔️ Basic/Standard ❌ Enterprise

В этом кратком руководстве объясняется, как создавать и развертывать приложения Spring в Azure Spring Apps с помощью Azure CLI.

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

загрузка примера приложения;

Чтобы скачать пример приложения, выполните следующие действия. Если вы использовали Azure Cloud Shell, перейдите в локальную командную строку.

  1. Создайте папку и клонируйте пример репозитория приложения.

    mkdir source-code
    
    cd source-code
    
    git clone https://github.com/Azure-Samples/azure-spring-apps-samples
    
  2. Перейдите в каталог репозитория.

    cd azure-spring-apps-samples
    

Развертывание PlanetWeatherProvider

Чтобы развернуть проект PlanetWeatherProvider, выполните следующие действия.

  1. Создайте приложение для проекта в экземпляре PlanetWeatherProvider Azure Spring Apps.

    az spring app create --name planet-weather-provider --runtime-version NetCore_31
    

    Чтобы включить автоматическую регистрацию службы, вы предоставили приложению то же имя, что и значение spring.application.name в файле appsettings.json проекта:

    "spring": {
      "application": {
        "name": "planet-weather-provider"
      }
    }
    

    Выполнение этой команды может занять несколько минут.

  2. Перейдите в папку проекта PlanetWeatherProvider.

    cd steeltoe-sample/src/planet-weather-provider
    
  3. Создайте двоичные файлы и ZIP-файл для развертывания.

    dotnet publish -c release -o ./publish
    

    Совет

    После записи двоичных файлов в папку ./publish файл проекта будет содержать следующий XML для упаковки двоичных файлов в ZIP-файл:

    <Target Name="Publish-Zip" AfterTargets="Publish">
      <ZipDirectory SourceDirectory="$(PublishDir)" DestinationFile="$(MSBuildProjectDirectory)/publish-deploy-planet.zip" Overwrite="true" />
    </Target>
    
  4. Разверните проект в Azure.

    Перед выполнением следующей команды убедитесь, что командная строка открыта в папке проекта.

    az spring app deploy \
        --name planet-weather-provider \
        --runtime-version NetCore_31 \
        --main-entry Microsoft.Azure.SpringCloud.Sample.PlanetWeatherProvider.dll \
        --artifact-path ./publish-deploy-planet.zip
    

    Параметр --main-entry задает относительный путь от корневой папки ZIP-файла к DLL-файлу, который содержит точку входа приложения. После отправки .zip-файла служба извлекает все файлы и папки, а затем пытается выполнить точку входа в указанном файле .dll .

    Выполнение этой команды может занять несколько минут.

Развертывание SolarSystemWeather

Чтобы развернуть проект SolarSystemWeather, выполните следующие действия.

  1. Создайте другое приложение в экземпляре Azure Spring Apps для проекта.

    az spring app create --name solar-system-weather --runtime-version NetCore_31
    

    solar-system-weather — это имя, указанное в файле appsettings.json проекта SolarSystemWeather.

    Выполнение этой команды может занять несколько минут.

  2. Перейдите в каталог проекта SolarSystemWeather.

    cd ../solar-system-weather
    
  3. Создайте двоичные файлы и ZIP-файл для развертывания.

    dotnet publish -c release -o ./publish
    
  4. Разверните проект в Azure.

    az spring app deploy \
        --name solar-system-weather \
        --runtime-version NetCore_31 \
        --main-entry Microsoft.Azure.SpringCloud.Sample.SolarSystemWeather.dll \
        --artifact-path ./publish-deploy-solar.zip
    

    Выполнение этой команды может занять несколько минут.

Назначение общедоступной конечной точки

Перед тестированием приложения получите общедоступную конечную точку для HTTP-запроса GET к приложению solar-system-weather .

  1. Выполните следующую команду, чтобы назначить конечную точку.

    az spring app update --name solar-system-weather --assign-endpoint true
    
  2. Выполните следующую команду, чтобы получить URL-адрес конечной точки.

    Windows:

    az spring app show --name solar-system-weather --output table
    

    Linux:

    az spring app show --name solar-system-weather | grep url
    

Тестирование приложения

Чтобы протестировать приложение, отправьте запрос GET в solar-system-weather приложение. В браузере перейдите к общедоступному URL-адресу с /weatherforecast добавленным к нему URL-адресом. Например: https://servicename-solar-system-weather.azuremicroservices.io/weatherforecast

Выходные данные — JSON-файл:

[{"Key":"Mercury","Value":"very warm"},{"Key":"Venus","Value":"quite unpleasant"},{"Key":"Mars","Value":"very cool"},{"Key":"Saturn","Value":"a little bit sandy"}]

Из этого вывода следует, что работают оба приложения для Spring. Приложение SolarSystemWeather возвращает данные, полученные из приложения PlanetWeatherProvider.

В этой статье объясняется, как создавать и развертывать приложения Spring в Azure Spring Apps. Вы можете использовать Azure CLI, подключаемый модуль Maven или Intellij. В этой статье описывается каждая альтернатива.

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

Локальное создание приложений для Spring

Используйте следующие команды, чтобы клонировать пример репозитория, перейти к папке образца, а затем создать проект.

git clone https://github.com/azure-samples/spring-petclinic-microservices
cd spring-petclinic-microservices
mvn clean package -DskipTests -Denv=cloud

Компиляция проекта занимает 5–10 минут. При компиляции проекта необходимо иметь отдельные JAR-файлы для каждой службы в соответствующих папках.

Создание и развертывание приложений в Azure Spring Apps

Выполните следующие действия, чтобы создать и развернуть приложения в Azure Spring Apps с помощью интерфейса командной строки.

  1. Если вы не выполняли приведенные ниже команды в предыдущих кратких руководствах, выполните их, чтобы задать значения по умолчанию CLI.

    az configure --defaults group=<resource-group-name> spring=<service-name>
    
  2. Создайте два основных приложения Spring для PetClinic: api-gateway и customers-service.

    az spring app create \
        --name api-gateway \
        --runtime-version Java_17 \
        --instance-count 1 \
        --memory 2Gi \
        --assign-endpoint
    az spring app create \
        --name customers-service \
        --runtime-version Java_17 \
        --instance-count 1 \
        --memory 2Gi
    
  3. Разверните JAR-файлы, созданные на предыдущем шаге.

    az spring app deploy \
        --name api-gateway \
        --artifact-path spring-petclinic-api-gateway/target/api-gateway-3.0.1.jar \
        --jvm-options="-Xms2048m -Xmx2048m"
    az spring app deploy \
        --name customers-service \
        --artifact-path spring-petclinic-customers-service/target/customers-service-3.0.1.jar \
        --jvm-options="-Xms2048m -Xmx2048m"
    
  4. Запросите состояние приложения после развертываний с помощью следующей команды.

    az spring app list --output table
    

    Выходные данные этой команды выглядят примерно так:

    Name               Location    ResourceGroup    Production Deployment    Public Url                                           Provisioning Status    CPU    Memory    Running Instance    Registered Instance    Persistent Storage
    -----------------  ----------  ---------------  -----------------------  ---------------------------------------------------  ---------------------  -----  --------  ------------------  ---------------------  --------------------
    api-gateway        eastus      xxxxxx-sp         default                  https://<service name>-api-gateway.azuremicroservices.io   Succeeded              1      2         1/1                 1/1                    -
    customers-service  eastus      <service name>         default                                                                       Succeeded              1      2         1/1                 1/1                    -
    

Проверка служб

Доступ api-gateway и customers-service из браузера с общедоступным URL-адресом, показанным ранее, в формате https://<service name>-api-gateway.azuremicroservices.io.

Снимок экрана: пример приложения PetClinic, на котором показана страница

Совет

Чтобы устранить неполадки с развертываниями, можно использовать следующую команду для получения журналов потоковой передачи в реальном времени при каждом выполнении az spring app logs --name <app name> --follow приложением.

Развертывание дополнительных приложений

Чтобы получить приложение PetClinic, работающее со всеми функциями, такими как сервер Администратор, визиты и ветеринары, разверните другие приложения со следующими командами:

az spring app create \
    --name admin-server \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi \
    --assign-endpoint
az spring app create \
    --name vets-service \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi
az spring app create \
    --name visits-service \
    --runtime-version Java_17 \
    --instance-count 1 \
    --memory 2Gi
az spring app deploy \
    --name admin-server \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-admin-server/target/admin-server-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"
az spring app deploy \
    --name vets-service \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-vets-service/target/vets-service-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"
az spring app deploy \
    --name visits-service \
    --runtime-version Java_17 \
    --artifact-path spring-petclinic-visits-service/target/visits-service-3.0.1.jar \
    --jvm-options="-Xms1536m -Xmx1536m"

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

Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Удалите ненужную группу ресурсов. Ресурсы в ней будут также удалены. Чтобы удалить группу ресурсов с помощью Azure CLI, используйте следующие команды:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

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