Compartilhar via


Preparar um aplicativo para implantação no Azure Spring Apps

Observação

Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de desativação de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.

O plano Standard de consumo e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano Standard de consumo e dedicado dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.

Este artigo se aplica ao: ✔️ nível Básico/Standard ✔️ nível Enterprise

Este artigo mostra como preparar um aplicativo Steeltoe existente para implantação no Azure Spring Apps. O Azure Spring Apps fornece serviços robustos para hospedar, monitorar, dimensionar e atualizar um aplicativo Steeltoe.

Este artigo explica as dependências, a configuração e o código necessários para executar um aplicativo Steeltoe do .NET Core no Azure Spring Apps. Para saber como implantar um aplicativo no Azure Spring Apps, confira Implantar seu primeiro aplicativo Spring Boot no Azure Spring Apps.

Observação

O suporte do Steeltoe para o Azure Spring Apps é oferecido atualmente como uma versão prévia pública. As ofertas de visualização pública permitem que os clientes experimentem os novos recursos antes do lançamento oficial. Os serviços e recursos de visualização pública não são destinados ao uso em produção. Para obter mais informações sobre o suporte durante as versões prévias, confira as perguntas frequentes ou registre uma Solicitação de suporte.

Versões suportadas

O Azure Spring Apps dá suporte a:

  • .NET Core 3.1
  • Steeltoe 2.4 e 3.0

Dependências

Para Steeltoe 2.4, adicione o pacote Microsoft.Azure.SpringCloud.Client 1.x.x mais recente ao arquivo de projeto:

<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>

Para Steeltoe 3.0, adicione o pacote Microsoft.Azure.SpringCloud.Client 2.x.x mais recente ao arquivo de projeto:

<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>

Atualizar Program.cs

No método Program.Main, chame o método UseAzureSpringCloudService.

Para o Steeltoe 2.4.4, chame UseAzureSpringCloudService depois de ConfigureWebHostDefaults e depois de AddConfigServer se ele for chamado:

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

Para Steeltoe 3.0.0, chame UseAzureSpringCloudService antes de ConfigureWebHostDefaults e antes de códigos de configuração do Steeltoe:

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

Habilitar descoberta de serviço do servidor Eureka

Observação

O Eureka não é aplicável ao plano Enterprise. Se estiver usando o plano Enterprise, confira Usar o registro de serviço.

Na fonte de configuração que será usada quando o aplicativo for executado nos Aplicativos Spring do Azure, defina spring.application.name com o mesmo nome que o aplicativo dos Aplicativos Spring do Azure no qual o projeto será implantado.

Por exemplo, se você implantar um projeto do .NET chamado EurekaDataProvider para um aplicativo Azure Spring Apps chamado planet-weather-provider, o arquivo appSettings.json deverá incluir o seguinte JSON:

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

Usar descoberta de serviço

Para chamar um serviço usando a descoberta de serviço do servidor Eureka, faça solicitações HTTP para http://<app_name>, onde app_name é o valor do spring.application.name do aplicativo de destino. Por exemplo, o seguinte código chama o serviço 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]),
    };
}

Este artigo mostra como preparar um aplicativo Java Spring existente para implantação no Azure Spring Apps. Se configurado corretamente, o Azure Spring Apps fornecerá serviços robustos para monitorar, dimensionar e atualizar seu aplicativo Java Spring.

Antes de executar este exemplo, experimente o guia de início rápido básico.

Outros exemplos explicam como implantar um aplicativo no Azure Spring Apps quando o arquivo POM é configurado.

Este artigo explica as dependências necessárias e como adicioná-las ao arquivo POM.

Versão do Java Runtime

Para obter detalhes, confira a seção Runtime Java e versões do sistema operacional das Perguntas frequentes sobre o Azure Spring Apps.

Versões Spring Boot e Spring Cloud

Para preparar um aplicativo Spring Boot existente para implantação no Azure Spring Apps, inclua as dependências Spring Boot e Spring Cloud no arquivo POM do aplicativo, conforme mostrado nas seções a seguir.

Os Aplicativos Spring do Azure darão suporte à última versão principal do Spring Boot ou Spring Cloud a partir de 30 dias após seu lançamento. Os Aplicativos Spring do Azure dão suporte à versão secundária mais recente assim que ela é lançada. Você pode obter as versões Spring Boot com suporte a partir de Versões Spring Boot e versões Spring Cloud a partir de Versões Spring Cloud.

A seguinte tabela lista as combinações do Spring Boot e do Spring Cloud compatíveis:

Versão do Spring Boot Versão do Spring Cloud Fim do suporte
3.2.x 2023.0.x, também conhecida como Leyton 23/11/2024
3.1.x 2022.0.3+, também conhecida como Kilburn 18/05/2024
3.0.x 2022.0.3+, também conhecida como Kilburn 24/11/2023
2.7.x 2021.0.3+, também conhecida como Jubilee 24/11/2023

Para obter mais informações, consulte as seguintes páginas:

Para habilitar os recursos internos do Azure Spring Apps do registro de serviço para o rastreamento distribuído, você também precisará incluir as seguintes dependências em seu aplicativo. Você poderá descartar algumas dessas dependências se não precisar de recursos correspondentes para os aplicativos específicos.

Registro do Serviço

Para usar o serviço gerenciado Registro de Serviço do Azure, inclua a dependência spring-cloud-starter-netflix-eureka-client no arquivo pom.xml, conforme mostrado aqui:

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

O ponto de extremidade do servidor do Registro de Serviço é injetado automaticamente como variáveis de ambiente com o aplicativo. Os aplicativos podem se registrar por conta própria no servidor do Registro de Serviço e descobrir outros microsserviços dependentes.

Anotação EnableDiscoveryClient

Adicione a anotação a seguir ao código-fonte do aplicativo.

@EnableDiscoveryClient

Por exemplo, confira o aplicativo piggymetrics de exemplos anteriores:

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);
    }
}

Configuração distribuída

Para habilitar a configuração distribuída, inclua a seguinte dependência spring-cloud-config-client na seção de dependências do arquivo 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>

Aviso

Não especifique spring.cloud.config.enabled=false na configuração de inicialização. Caso contrário, o aplicativo deixará de funcionar com o Servidor de Configuração.

Métricas

Inclua a dependência spring-boot-starter-actuator na seção de dependências do arquivo pom.xml, conforme mostrado aqui:

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

As métricas são extraídas periodicamente dos pontos de extremidade JMX. Visualize as métricas usando o portal do Azure.

Aviso

Especifique spring.jmx.enabled=true na propriedade de configuração. Caso contrário, as métricas não poderão ser visualizadas no portal do Azure.

Confira também

Próximas etapas

Neste artigo, você aprendeu a configurar o aplicativo Spring Java para implantação no Azure Spring Apps. Para saber como configurar uma instância de servidor de configuração, confira Configurar uma instância de servidor de configuração.

Mais exemplos estão disponíveis no GitHub: Exemplos do Azure Spring Apps.