Подготовка приложения для развертывания в Azure Spring Apps

Примечание.

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

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

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

Также в статье описаны зависимости, конфигурация и код для запуска приложения .NET Core Steeltoe в Azure Spring Apps. Сведения о развертывании приложения в Azure Spring Apps можно найти в статье Развертывание первого приложения Spring Boot в Azure Spring Apps.

Примечание.

Сейчас поддержка Steeltoe для Azure Spring Apps предоставляется в виде общедоступной предварительной версии. Предложения общедоступной предварительной версии позволяют клиентам экспериментировать с новыми функциями до официального выпуска. Функции и службы общедоступной предварительной версии не предназначены для использования в рабочей среде. Чтобы получить дополнительные сведения о поддержке на этапе использования предварительных версий, ознакомьтесь с разделом Вопросы и ответы или оформите запрос на поддержку.

Поддерживаемые версии

Azure Spring Apps поддерживает следующие возможности:

  • .NET Core 3.1.
  • Steeltoe 2.4 и 3.0

Зависимости

Для Steeltoe 2.4 добавьте в файл проекта последнюю версию пакета Microsoft.Azure.SpringCloud.Client 1.x.x:

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="1.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="2.4.4" />
  <PackageReference Include="Steeltoe.Management.ExporterCore" Version="2.4.4" />
</ItemGroup>

Для Steeltoe 3.0 добавьте в файл проекта последнюю версию пакета Microsoft.Azure.SpringCloud.Client 2.x.x:

<ItemGroup>
  <PackageReference Include="Microsoft.Azure.SpringCloud.Client" Version="2.0.0-preview.1" />
  <PackageReference Include="Steeltoe.Discovery.ClientCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Extensions.Configuration.ConfigServerCore" Version="3.0.0" />
  <PackageReference Include="Steeltoe.Management.TracingCore" Version="3.0.0" />
</ItemGroup>

Обновление Program.cs

В методе Program.Main вызовите метод UseAzureSpringCloudService.

Для Steeltoe 2.4.4 вызовите UseAzureSpringCloudService после ConfigureWebHostDefaults и после AddConfigServer, если он вызывается:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer()
        .UseAzureSpringCloudService();

Для Steeltoe 3.0.0 вызовите UseAzureSpringCloudService до ConfigureWebHostDefaults и перед любым кодом конфигурации Steeltoe:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .UseAzureSpringCloudService()
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
        .AddConfigServer();

Включение обнаружения службы Eureka Server

Примечание.

Eureka неприменимо к плану Enterprise. Если вы используете план Enterprise, см. раздел "Использование реестра служб".

В источнике конфигурации, используемом при запуске приложения в Azure Spring Apps, задайте spring.application.name то же имя, что и приложение Azure Spring Apps, в котором развертывается проект.

Например, при развертывании проекта .NET с именем EurekaDataProvider в приложении Azure Spring Apps с именем planet-weather-provider файл appSettings.json должен включать следующий код JSON:

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

Применение обнаружения службы

Чтобы вызвать службу с помощью обнаружения службы Eureka Server, выполните HTTP-запросы к http://<app_name>, где app_name — это значение spring.application.name целевого приложения. Следующий пример кода вызывает службу planet-weather-provider:

using (var client = new HttpClient(discoveryHandler, false))
{
    var responses = await Task.WhenAll(
        client.GetAsync("http://planet-weather-provider/weatherforecast/mercury"),
        client.GetAsync("http://planet-weather-provider/weatherforecast/saturn"));
    var weathers = await Task.WhenAll(from res in responses select res.Content.ReadAsStringAsync());
    return new[]
    {
        new KeyValuePair<string, string>("Mercury", weathers[0]),
        new KeyValuePair<string, string>("Saturn", weathers[1]),
    };
}

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

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

В других примерах объясняется, как развернуть приложение в Azure Spring Apps, если настроен файл POM.

В этой статье описываются необходимые зависимости и их добавление в файл POM.

Версия среды выполнения Java

Дополнительные сведения см. в разделе Версия среды выполнения Java и версии ОС в статье Часто задаваемые вопросы об Azure Spring Apps.

Версии Spring Boot и Spring Cloud

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

Azure Spring Apps поддерживает последнюю версию Spring Boot или Spring Cloud, начиная с 30 дней после выпуска. Azure Spring Apps поддерживает последнюю дополнительную версию сразу после выпуска. Вы можете скачать поддерживаемые версии Spring Boot со страницы Выпуски Spring Boot, а версии Spring Cloud — со страницы Выпуски Spring Cloud.

Поддерживаемые комбинации Spring Boot и Spring Cloud перечислены в таблице ниже.

Версия Spring Boot Версия Spring Cloud Завершение коммерческой поддержки
3.2.x 2023.0.x также известный как Leyton 2026-02-23
3.1.x 2022.0.3+ также известный как Килберн 2025-08-18
3.0.x 2022.0.3+ также известный как Килберн 2025-02-24
2.7.x 2021.0.3+ также известный как Jubilee 2025-08-24
2.6.x 2021.0.3+ также известный как Jubilee 2024-02-24

Дополнительные сведения см. на следующих страницах:

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

Реестр служб

Чтобы использовать управляемую службу реестра служб Azure, добавьте в файл pom.xml зависимость spring-cloud-starter-netflix-eureka-client, как показано ниже:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Конечная точка сервера реестра служб будет автоматически внедрена в приложение в виде переменных среды. Приложения смогут регистрироваться на сервере реестра служб и обнаруживать другие зависимые приложения.

Заметка EnableDiscoveryClient

Добавьте следующую заметку в исходный код приложения.

@EnableDiscoveryClient

См. более ранние примеры для приложения PiggyMetrics:

package com.piggymetrics.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy

public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

Распределенная конфигурация

Чтобы включить распределенную конфигурацию в плане enterprise, используйте службу конфигурации приложений для VMware Tanzu, которая является одним из собственных компонентов VMware Tanzu. Служба конфигурации приложений для Tanzu — это собственный код Kubernetes и отличается от сервера конфигурации Spring Cloud. Служба конфигурации приложений для Tanzu позволяет управлять собственными ресурсами ConfigMap Kubernetes, которые заполняются свойствами, заданными в одном или нескольких репозиториях Git.

В плане Enterprise нет сервера конфигурации Spring Cloud, но вы можете использовать службу конфигурации приложений для Tanzu для управления централизованных конфигураций. Дополнительные сведения см. в статье Использование службы конфигурации приложений для Tanzu

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

  1. Добавьте явную привязку приложения, чтобы объявить, что приложению необходимо использовать службу конфигурации приложений для Tanzu.

    Примечание.

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

  2. Задайте шаблоны файлов конфигурации. Шаблоны файлов конфигурации позволяют выбрать приложение и профилировать его. Дополнительные сведения см. в разделе Шаблонслужбы «Использование службы конфигурации приложений для Tanzu».

    Другой вариант — установить шаблоны файлов конфигурации одновременно с развертыванием приложения, как показано в следующем примере:

       az spring app deploy \
           --name <app-name> \
           --artifact-path <path-to-your-JAR-file> \
           --config-file-pattern <config-file-pattern>
    

Метрики

Добавьте зависимость spring-boot-starter-actuator в раздел зависимостей файла pom.xml, как показано ниже:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Метрики периодически извлекаются из конечных точек JMX. Эти метрики можно визуализировать с помощью портала Azure.

Предупреждение

Укажите spring.jmx.enabled=true в свойствах конфигурации. В противном случае метрики не будут отображаться на портале Azure.

См. также

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

Из этой статьи вы узнали о настройке своего приложения Java Spring для развертывания в Azure Spring Apps. Сведения о настройке экземпляра Config Server см. в разделе Настройка экземпляра Config Server.

Дополнительные примеры доступны на GitHub в разделе Примеры для Azure Spring Apps.