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


Подготовка приложения для развертывания в 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

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

Чтобы включить встроенные функции 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.

См. также

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

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

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