Partilhar via


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

Nota

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

O plano de consumo padrão 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 obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.

Este artigo aplica-se a:✅ Basic/Standard ✅ 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 .NET Core Steeltoe no Azure Spring Apps. Para obter informações sobre como implantar um aplicativo no Azure Spring Apps, consulte Implantar seu primeiro aplicativo Spring Boot no Azure Spring Apps.

Nota

O suporte do Steeltoe para Azure Spring Apps é atualmente oferecido como uma visualização pública. As ofertas de visualização pública permitem que os clientes experimentem novos recursos antes do lançamento oficial. Os recursos e serviços de visualização pública não se destinam ao uso em produção. Para obter mais informações sobre suporte durante as visualizações, consulte as Perguntas frequentes ou arquive uma solicitação de suporte.

Versões suportadas

O Azure Spring Apps suporta:

  • .NET Core 3.1
  • Dedo de aço 2.4 e 3.0

Dependências

Para o 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 o 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, chame o Program.Main UseAzureSpringCloudService método.

Para o Steeltoe 2.4.4, ligue UseAzureSpringCloudService depois ConfigureWebHostDefaults e depois AddConfigServer se for chamado:

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

Para o Steeltoe 3.0.0, ligue UseAzureSpringCloudService antes ConfigureWebHostDefaults e antes de qualquer código de configuração do Steeltoe:

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

Habilitar a descoberta de serviço do Eureka Server

Nota

O Eureka não é aplicável ao plano Enterprise. Se você estiver usando o plano Enterprise, consulte Usar o Registro de Serviço.

Na fonte de configuração usada quando o aplicativo é executado no Azure Spring Apps, defina spring.application.name com o mesmo nome do aplicativo Azure Spring Apps no qual o projeto é implantado.

Por exemplo, se você implantar um projeto .NET nomeado 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 a descoberta de serviço

Para chamar um serviço usando a descoberta de serviço do Eureka Server, faça solicitações HTTP para http://<app_name> onde app_name está o valor do aplicativo de spring.application.name destino. Por exemplo, o código a seguir chama o planet-weather-provider serviço:

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 fornece serviços robustos para monitorar, dimensionar e atualizar seu aplicativo Java Spring.

Antes de executar este exemplo, você pode tentar o 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, consulte a seção Java runtime and OS versions 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 do Spring Boot e do Spring Cloud no arquivo POM do aplicativo, conforme mostrado nas seções a seguir.

O Azure Spring Apps suporta a versão principal mais recente do Spring Boot ou do Spring Cloud a partir de 30 dias após o seu lançamento. O Azure Spring Apps suporta a versão secundária mais recente assim que é lançada. Você pode obter versões suportadas do Spring Boot a partir do Spring Boot Releases e versões do Spring Cloud do Spring Cloud Releases.

A tabela a seguir lista as combinações suportadas do Spring Boot e do Spring Cloud:

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

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 precisa incluir as seguintes dependências em seu aplicativo. Você pode descartar algumas dessas dependências se não precisar dos recursos correspondentes para os aplicativos específicos.

Registo de Serviços

Para usar o serviço gerenciado do Registro de Serviço do Azure, inclua a spring-cloud-starter-netflix-eureka-client dependência no arquivo de 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 seu aplicativo. Os aplicativos podem se registrar no servidor do Registro de Serviço e descobrir outros aplicativos dependentes.

Anotação EnableDiscoveryClient

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

@EnableDiscoveryClient

Por exemplo, consulte 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 spring-cloud-config-client dependência na seção 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 sua configuração de bootstrap. Caso contrário, seu aplicativo para de funcionar com o Config Server.

Métricas

Inclua a spring-boot-starter-actuator dependência na seção dependências do seu arquivo de 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. Você pode visualizar as métricas usando o portal do Azure.

Aviso

Você deve especificar spring.jmx.enabled=true em sua propriedade de configuração. Caso contrário, as métricas não poderão ser visualizadas no portal do Azure.

Consulte também

Próximos passos

Neste artigo, você aprendeu como configurar seu aplicativo Java Spring para implantação no Azure Spring Apps. Para saber como configurar uma instância do Config Server, consulte Configurar uma instância do Config Server.

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