Préparer une application Spring Java pour le déploiement dans Azure Spring Apps

Remarque

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

Cet article s’applique au : Niveau ✔️ De base/Standard ✔️ Entreprise

Cet article explique comment préparer une application Steeltoe existante pour le déploiement sur Azure Spring Apps. Azure Spring Apps fournit des services robustes pour héberger, monitorer, mettre à l’échelle et mettre à jour une application Steeltoe.

Cet article présente les dépendances, la configuration et le code nécessaires pour exécuter une application .NET Core Steeltoe dans Azure Spring Apps. Pour plus d’informations sur le déploiement d’une application sur Azure Spring Apps, consultez Déployer votre première application Spring Boot dans Azure Spring Apps.

Remarque

La prise en charge d’Azure Spring Apps par Steeltoe est actuellement disponible en préversion publique. Les offres en préversion publique permettent aux clients de tester les nouvelles fonctionnalités avant leur publication officielle. Les fonctionnalités et services en préversion publique ne sont pas destinés à une utilisation en contexte de production. Pour en savoir plus sur le support offert avec les préversions, consultez notre FAQ ou envoyez une demande de support.

Versions prises en charge

Azure Spring Apps prend en charge :

  • .NET Core 3.1
  • Steeltoe 2.4 et 3.0

Dépendances

Pour Steeltoe 2.4, ajoutez le dernier package Microsoft.Azure.SpringCloud.Client 1.x.x au fichier projet :

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

Pour Steeltoe 3.0, ajoutez le dernier package Microsoft.Azure.SpringCloud.Client 2.x.x au fichier projet :

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

Mise à jour Program.cs

Dans la méthode Program.Main, appelez la méthode UseAzureSpringCloudService.

Pour Steeltoe 2.4.4, appelez UseAzureSpringCloudService après ConfigureWebHostDefaults et après AddConfigServer s’il est appelé :

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

Pour Steeltoe 3.0.0, appelez UseAzureSpringCloudService avant ConfigureWebHostDefaults et avant tout code de configuration Steeltoe :

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

Activer la détection de service Eureka Server

Remarque

Eureka n’est pas applicable au plan Entreprise. Si vous utilisez le plan Entreprise, consultez Utiliser le registre de service.

Dans la source de configuration utilisée quand l’application s’exécute dans Azure Spring Apps, définissez spring.application.name sur le même nom que l’application Azure Spring Apps dans laquelle le projet est déployé.

Par exemple, si vous déployez un projet .NET nommé EurekaDataProvider dans une application Azure Spring Apps nommée planet-weather-provider, le fichier appSettings.json doit inclure le code JSON suivant :

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

Utiliser la détection de service

Pour appeler un service à l'aide de la détection de service Eureka Server, envoyez des requêtes HTTP à http://<app_name>, sachant que app_name correspond à la valeur de la propriété spring.application.name de l'application cible. Par exemple, le code suivant appelle le service 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]),
    };
}

Cet article montre comment préparer une application Java Spring existante pour son déploiement sur Azure Spring Apps. S’il est correctement configuré, Azure Spring Apps fournit des services robustes pour monitorer, mettre à l’échelle et mettre à jour votre application Java Spring.

Avant d’exécuter cet exemple, vous pouvez essayer le démarrage rapide de base.

D’autres exemples expliquent comment déployer une application sur Azure Spring Apps quand le fichier POM est configuré.

Cet article explique les dépendances nécessaires et comment les ajouter au fichier POM.

Version du runtime Java

Pour plus d’informations, consultez la section Runtime Java et versions de système d’exploitation du FAQ sur Azure Spring Apps.

Versions de Spring Boot et de Spring Cloud

Pour préparer une application Spring Boot existante pour un déploiement sur Azure Spring Apps, incluez les dépendances Spring Boot et Spring Cloud dans le fichier POM de l’application comme indiqué dans les sections suivantes.

Azure Spring Apps prend en charge la dernière version principale de Spring Boot ou Spring Cloud 30 jours après sa publication. Azure Spring Apps prend en charge la dernière version mineure dès sa publication. Vous pouvez obtenir des versions de Spring Boot prises en charge à partir des Versions Spring Boot et des versions de Spring Cloud à partir de Versions Spring Cloud.

Le tableau ci-dessous liste les combinaisons prises en charges de Spring Boot et Spring Cloud :

Version de Spring Boot Version de Spring Cloud Fin du support commercial
3.2.x 2023.0.x également appelée Leyton 2026-02-23
3.1.x 2022.0.3+ également appelée Kilburn 2025-08-18
3.0.x 2022.0.3+ également appelée Kilburn 2025-02-24
2.7.x 2021.0.3+ également appelée Jubilee 2025-08-24
2.6.x 2021.0.3+ également appelée Jubilee 2024-02-24

Pour plus d'informations, consultez les pages suivantes :

Pour activer les fonctionnalités intégrées d’Azure Spring Apps à partir du registre de services dans le traçage distribué, vous devez également inclure les dépendances suivantes dans votre application. Vous pouvez supprimer certaines de ces dépendances si vous n’avez pas besoin de fonctionnalités correspondantes pour les applications spécifiques.

Registre de service

Pour utiliser le service managé Azure Service Registry, ajoutez la dépendance spring-cloud-starter-netflix-eureka-client dans le fichier pom.xml, comme indiqué ici :

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

Le point de terminaison du serveur Service Registry est injecté automatiquement sous la forme de variables d’environnement avec votre application. Les applications peuvent s’inscrire sur le serveur Service Registry et découvrir d’autres applications dépendantes.

Annotation EnableDiscoveryClient

Ajoutez l’annotation suivante au code source de l’application.

@EnableDiscoveryClient

Par exemple, regardez l’application piggymetrics provenant des exemples précédents :

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

Configuration distribuée

Pour activer la configuration distribuée dans le plan Entreprise, utilisez Application Configuration Service for VMware Tanzu, qui est un des composants VMware Tanzu internes. Application Configuration Service for Tanzu est natif Kubernetes et différent de Spring Cloud Config Server. Application Configuration Service for Tanzu permet une gestion native Kubernetes des ressources ConfigMap qui sont renseignées avec les propriétés définies dans un ou plusieurs dépôts Git.

Dans le plan Entreprise, il n’y a pas de Spring Cloud Config Server, mais vous pouvez utiliser Application Configuration Service for Tanzu pour gérer les configurations centralisées. Pour plus d’informations, consultez Utiliser Application Configuration Service for Tanzu

Pour utiliser Application Configuration Service for Tanzu, suivez ces étapes pour chacune de vos applications :

  1. Ajoutez une liaison d’application explicite pour déclarer que votre application doit utiliser Application Configuration Service for Tanzu.

    Remarque

    Lorsque vous modifiez l’état de liaison, vous devez redémarrer ou redéployer l’application pour que le changement prenne effet.

  2. Définissez des modèles de fichier config. Les modèles de fichier config vous permettent de choisir l’application et le profil utilisés par l’application. Pour plus d’informations, consultez la section Modèle de Utiliser Application Configuration Service for Tanzu.

    Une autre option est de définir les modèles de fichier config en même temps que votre déploiement d’application, comme illustré dans l’exemple suivant :

       az spring app deploy \
           --name <app-name> \
           --artifact-path <path-to-your-JAR-file> \
           --config-file-pattern <config-file-pattern>
    

Métriques

Ajoutez la dépendance spring-boot-starter-actuator dans la section des dépendances de votre fichier pom.xml, comme indiqué ici :

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

Les métriques sont tirées (pull) périodiquement des points de terminaison JMX. Vous pouvez visualiser les métriques dans le portail Azure.

Avertissement

Vous devez spécifier spring.jmx.enabled=true dans votre propriété de configuration. Dans le cas contraire, les métriques ne peuvent pas être visualisées dans le portail Azure.

Voir aussi

Étapes suivantes

Dans cet article, vous avez appris à configurer votre application Java Spring pour la déployer sur Azure Spring Apps. Pour savoir comment configurer une instance Config Server, consultez Configurer une instance Config Server.

D’autres exemples sont disponibles sur GitHub : Exemples Azure Spring Apps.