Preparare un'applicazione per la distribuzione in Azure Spring Apps

Nota

I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.

Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.

Questo articolo si applica a: ✔️ Basic/Standard ✔️ Enterprise

Questo articolo illustra come preparare un'applicazione Steeltoe esistente per la distribuzione in Azure Spring Apps. Azure Spring Apps offre servizi affidabili per ospitare, monitorare, ridimensionare e aggiornare un'app Steeltoe.

Questo articolo illustra le dipendenze, la configurazione e il codice necessari per eseguire un'app .NET Core Steeltoe in Azure Spring Apps. Per informazioni su come distribuire un'applicazione in Azure Spring Apps, vedere Distribuire la prima app Spring Boot in Azure Spring Apps.

Nota

Il supporto di Steeltoe per Azure Spring Apps è attualmente disponibile come anteprima pubblica. Le offerte di anteprima pubblica consentono ai clienti di sperimentare le nuove funzionalità prima del rilascio della versione ufficiale. I servizi e le funzionalità di anteprima pubblica non sono destinati all'uso in produzione. Per altre informazioni sul supporto durante le anteprime, vedere le domande frequenti o inviare una richiesta di supporto.

Versioni supportate

Azure Spring Apps supporta:

  • .NET Core 3.1
  • Steeltoe 2.4 e 3.0

Dipendenze

Per Steeltoe 2.4, aggiungere il pacchetto Microsoft.Azure.SpringCloud.Client 1.x.x più recente al file di progetto:

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

Per Steeltoe 3.0, aggiungere il pacchetto Microsoft.Azure.SpringCloud.Client 2.x.x più recente al file di progetto:

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

Aggiornare Program.cs.

Nel metodo Program.Main chiamare il metodo UseAzureSpringCloudService.

Per Steeltoe 2.4.4, chiamare UseAzureSpringCloudService dopo ConfigureWebHostDefaults e dopo AddConfigServer se viene chiamato:

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

Per Steeltoe 3.0.0, chiamare UseAzureSpringCloudService prima di ConfigureWebHostDefaults e prima di qualsiasi codice di configurazione Steeltoe:

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

Abilitare l'individuazione del servizio Eureka Server

Nota

Eureka non è applicabile al piano Enterprise. Se si usa il piano Enterprise, vedere Usare il registro del servizio.

Nell'origine di configurazione usata quando l'app viene eseguita in Azure Spring Apps, impostare spring.application.name sullo stesso nome dell'app Azure Spring Apps in cui viene distribuito il progetto.

Ad esempio, se si distribuisce un progetto .NET denominato EurekaDataProvider in un'app Azure Spring Apps denominata planet-weather-provider, il file appSettings.json deve includere il codice JSON seguente:

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

Usare l'individuazione dei servizi

Per chiamare un servizio usando l'individuazione del servizio Eureka Server, effettuare richieste HTTP a http://<app_name> dove app_name è il valore di spring.application.name dell'app di destinazione. Ad esempio, il codice seguente chiama il servizio 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]),
    };
}

Questo articolo illustra come preparare un'applicazione Java Spring esistente per la distribuzione in Azure Spring Apps. Se correttamente configurato, Azure Spring Apps offre servizi affidabili per il monitoraggio, il ridimensionamento e l'aggiornamento dell'applicazione Java Spring.

Prima di eseguire questo esempio, è possibile provare la guida di avvio rapido di base.

Altri esempi illustrano come distribuire un'applicazione in Azure Spring Apps quando viene configurato il file POM.

Questo articolo descrive le dipendenze necessarie e spiega come aggiungerle al file POM.

Versione del runtime Java

Per informazioni dettagliate, vedere la sezione Runtime e versioni del sistema operativo Java nelle Domande frequenti su Azure Spring Apps.

Versioni di Spring Boot e Spring Cloud

Per preparare un'applicazione Spring Boot esistente per la distribuzione in Azure Spring Apps, includere le dipendenze di Spring Boot e Spring Cloud nel file POM dell'applicazione come illustrato nelle sezioni seguenti.

Azure Spring Apps supporta la versione principale di Spring Boot o Spring Cloud più recente a partire da 30 giorni dopo il rilascio. Azure Spring Apps supporta la versione secondaria più recente non appena viene rilasciata. È possibile ottenere versioni di Spring Boot supportate da Versioni di Spring Boot e Spring Cloud da Versioni di Spring Cloud.

Le combinazioni supportate di Spring Boot e Spring Cloud sono indicate nella tabella seguente:

Versione di Spring Boot Versione di Spring Cloud Fine del supporto
3.2.x 2023.0.x, nota anche come Leyton 2024-11-23
3.1.x 2022.0.3+ nota anche come Kilburn 2024-05-18
3.0.x 2022.0.3+ nota anche come Kilburn 2023-11-24
2.7.x 2021.0.3+, nota anche come Jubilee 2023-11-24

Per ulteriori informazioni, vedere i seguenti argomenti:

Per abilitare le funzionalità predefinite di Azure Spring Apps dal registro dei servizi alla traccia distribuita, è necessario includere anche le dipendenze seguenti nell'applicazione. È possibile eliminare alcune di queste dipendenze se non sono necessarie le funzionalità corrispondenti per le app specifiche.

Service Registry

Per usare il servizio Registro servizi di Azure gestito, includere la dipendenza spring-cloud-starter-netflix-eureka-client nel file pom.xml, come illustrato di seguito:

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

L'endpoint del server Service Registry verrà inserito automaticamente come variabile di ambiente nell'app. Le applicazioni possono registrarsi con il server Service Registry e individuare altre applicazioni dipendenti.

Annotazione EnableDiscoveryClient

Aggiungere l'annotazione seguente al codice sorgente dell'applicazione.

@EnableDiscoveryClient

Vedere ad esempio l'applicazione piggymetrics negli esempi precedenti:

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

Configurazione distribuita

Per abilitare la configurazione distribuita, includere la dipendenza spring-cloud-config-client seguente nella sezione delle dipendenze del file 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>

Avviso

Non specificare spring.cloud.config.enabled=false nella configurazione bootstrap. In caso contrario, l'applicazione non funzionerà più con Config Server.

Metrica

Includere la dipendenza spring-boot-starter-actuator nella sezione delle dipendenze del file pom.xml, come illustrato di seguito:

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

Viene periodicamente eseguito il pull delle metriche dagli endpoint JMX. È possibile visualizzare le metriche usando il portale di Azure.

Avviso

È necessario specificare spring.jmx.enabled=true nella proprietà di configurazione. In caso contrario, le metriche non possono essere visualizzate nel portale di Azure.

Vedi anche

Passaggi successivi

In questo articolo si è appreso come configurare l'applicazione Java Spring per la distribuzione in Azure Spring Apps. Per informazioni su come configurare un'istanza del server di configurazione, vedere Configurare un'istanza del server di configurazione.

Altri esempi sono disponibili in GitHub: Esempi di Azure Spring Apps.