Подготовка приложения для развертывания в Azure Spring Apps
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к: ✔️ 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 | End of support |
---|---|---|
3.2.x | 2023.0.x также известный как Leyton | 2024-11-23 |
3.1.x | 2022.0.3+ также известный как Килберн | 2024-05-18 |
3.0.x | 2022.0.3+ также известный как Килберн | 2023-11-24 |
2.7.x | 2021.0.3+ также известный как Jubilee | 2023-11-24 |
Дополнительные сведения см. на следующих страницах:
- Поддержка версий Для Java, Spring Boot и т. д.
- Поддержка Spring Boot
- Поддержка конфигурации Spring Cloud
- Поддержка Spring Cloud Netflix
- Добавление Spring Cloud в существующее приложение Spring Boot
Другие рекомендуемые зависимости для включения функций Azure Spring Apps
Чтобы включить встроенные функции 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);
}
}
Распределенная конфигурация
Чтобы включить распределенную конфигурацию, добавьте зависимость spring-cloud-config-client
в раздел зависимостей вашего файла pom.xml.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
Предупреждение
Не указывайте spring.cloud.config.enabled=false
в конфигурации начальной загрузки. В противном случае приложение не сможет взаимодействовать с сервером конфигурации.
Метрики
Добавьте зависимость 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.
См. также
- Анализ журналов и метрик приложений
- Настройка сервера конфигурации
- Краткое руководство по Spring
- Документация по Spring Boot
Следующие шаги
Из этой статьи вы узнали о настройке своего приложения Java Spring для развертывания в Azure Spring Apps. Сведения о настройке экземпляра Config Server см. в разделе Настройка экземпляра Config Server.
Дополнительные примеры доступны на GitHub в разделе Примеры для Azure Spring Apps.