Een toepassing voorbereiden voor implementatie in Azure Spring Apps

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op: ✔️ Basic/Standard ✔️ Enterprise

In dit artikel wordt beschreven hoe u een bestaande Steeltoe-toepassing voorbereidt voor implementatie in Azure Spring Apps. Azure Spring Apps biedt robuuste services voor het hosten, bewaken, schalen en bijwerken van een Steeltoe-app.

In dit artikel worden de afhankelijkheden, configuratie en code uitgelegd die vereist zijn voor het uitvoeren van een .NET Core Steeltoe-app in Azure Spring Apps. Zie Uw eerste Spring Boot-app implementeren in Azure Spring Apps voor informatie over het implementeren van een toepassing in Azure Spring Apps.

Notitie

Steeltoe-ondersteuning voor Azure Spring Apps wordt momenteel aangeboden als openbare preview. Met openbare preview-aanbiedingen kunnen klanten voorafgaand aan de officiële release met nieuwe functies experimenteren. Openbare preview-functies en -services zijn niet bedoeld voor gebruik in productie. Voor meer informatie over ondersteuning tijdens previews kunt u de Veelgestelde vragen raadplegen of een Ondersteuningsaanvraag indienen.

Ondersteunde versies

Azure Spring Apps biedt ondersteuning voor:

  • .NET Core 3.1
  • Steeltoe 2.4 en 3.0

Afhankelijkheden

Voeg voor Steeltoe 2.4 het meest recente pakket Microsoft.Azure.SpringCloud.Client 1.x.x toe aan het projectbestand:

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

Voeg voor Steeltoe 3.0 het meest recente pakket Microsoft.Azure.SpringCloud.Client 2.x.x toe aan het projectbestand:

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

Roep in de Program.Main methode de methode aan UseAzureSpringCloudService .

Voor Steeltoe 2.4.4 belt UseAzureSpringCloudService u na ConfigureWebHostDefaults en na AddConfigServer als het wordt aangeroepen:

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

Voor Steeltoe 3.0.0 roept UseAzureSpringCloudService u vóór ConfigureWebHostDefaults en vóór een Steeltoe-configuratiecode aan:

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

Eureka Server-servicedetectie inschakelen

Notitie

Eureka is niet van toepassing op het Enterprise-plan. Zie Serviceregister gebruiken als u het Enterprise-abonnement gebruikt.

Stel in de configuratiebron die wordt gebruikt wanneer de app wordt uitgevoerd in Azure Spring Apps, in op spring.application.name dezelfde naam als de Azure Spring Apps-app waarop het project wordt geïmplementeerd.

Als u bijvoorbeeld een .NET-project met de naam EurekaDataProvider implementeert in een Azure Spring Apps-app met de naam planet-weather-provider van de app Instellingen.json moet het volgende JSON-bestand bevatten:

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

Servicedetectie gebruiken

Als u een service wilt aanroepen met behulp van de Eureka Server-servicedetectie, moet u HTTP-aanvragen indienen waar http://<app_name>app_name de waarde van spring.application.name de doel-app is. Met de volgende code wordt bijvoorbeeld de service aanroepen 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]),
    };
}

In dit artikel wordt beschreven hoe u een bestaande Java Spring-toepassing voorbereidt voor implementatie in Azure Spring Apps. Als azure Spring Apps correct is geconfigureerd, biedt Azure Spring Apps robuuste services voor het bewaken, schalen en bijwerken van uw Java Spring-toepassing.

Voordat u dit voorbeeld kunt uitvoeren, kunt u de eenvoudige quickstart uitproberen.

In andere voorbeelden wordt uitgelegd hoe u een toepassing implementeert in Azure Spring Apps wanneer het POM-bestand is geconfigureerd.

In dit artikel worden de vereiste afhankelijkheden uitgelegd en hoe u deze toevoegt aan het POM-bestand.

Java Runtime-versie

Zie de sectie Java-runtime- en besturingssysteemversies van de veelgestelde vragen over Azure Spring Apps voor meer informatie.

Spring Boot- en Spring Cloud-versies

Als u een bestaande Spring Boot-toepassing wilt voorbereiden voor implementatie in Azure Spring Apps, neemt u de Spring Boot- en Spring Cloud-afhankelijkheden op in het POM-bestand van de toepassing, zoals wordt weergegeven in de volgende secties.

Azure Spring Apps ondersteunt de nieuwste primaire versie van Spring Boot of Spring Cloud vanaf 30 dagen na de release. Azure Spring Apps ondersteunt de nieuwste secundaire versie zodra deze is uitgebracht. U kunt ondersteunde Spring Boot-versies ophalen uit Spring Boot Releases en Spring Cloud-versies van Spring Cloud Releases.

De volgende tabel bevat de ondersteunde Combinaties van Spring Boot en Spring Cloud:

Spring Boot-versie Spring Cloud-versie Einde van commerciële ondersteuning
3.2.x 2023.0.x ook wel bekend als Leyton 2026-02-23
3.1.x 2022.0.3+ ook wel bekend als Kilburn 2025-08-18
3.0.x 2022.0.3+ ook wel bekend als Kilburn 2025-02-24
2.7.x 2021.0.3+ ook wel bekend als Jubileum 2025-08-24
2.6.x 2021.0.3+ ook wel bekend als Jubileum 2024-02-24

Zie de volgende pagina's voor meer informatie:

Als u de ingebouwde functies van Azure Spring Apps wilt inschakelen van het serviceregister naar gedistribueerde tracering, moet u ook de volgende afhankelijkheden in uw toepassing opnemen. U kunt sommige van deze afhankelijkheden verwijderen als u geen bijbehorende functies voor de specifieke apps nodig hebt.

Serviceregister

Als u de beheerde Service Registry-service van Azure wilt gebruiken, neemt u de spring-cloud-starter-netflix-eureka-client afhankelijkheid op in het pom.xml-bestand , zoals hier wordt weergegeven:

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

Het eindpunt van de Service Registry-server wordt automatisch geïnjecteerd als omgevingsvariabelen met uw app. Toepassingen kunnen zichzelf registreren bij de Service Registry-server en andere afhankelijke toepassingen detecteren.

Annotatie enableDiscoveryClient

Voeg de volgende aantekening toe aan de broncode van de toepassing.

@EnableDiscoveryClient

Zie bijvoorbeeld de piggymetrics-toepassing uit eerdere voorbeelden:

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

Gedistribueerde configuratie

Als u gedistribueerde configuratie in het Enterprise-plan wilt inschakelen, gebruikt u Application Configuration Service voor VMware Tanzu. Dit is een van de eigen VMware Tanzu-onderdelen. Application Configuration Service voor Tanzu is kubernetes-systeemeigen en verschilt van Spring Cloud-configuratieserver. Toepassingsconfiguratieservice voor Tanzu maakt het beheer van Kubernetes-systeemeigen ConfigMap-resources mogelijk die zijn ingevuld op basis van eigenschappen die zijn gedefinieerd in een of meer Git-opslagplaatsen.

In het Enterprise-plan is er geen Spring Cloud-configuratieserver, maar u kunt Application Configuration Service voor Tanzu gebruiken om gecentraliseerde configuraties te beheren. Zie Application Configuration Service voor Tanzu gebruiken voor meer informatie

Als u Application Configuration Service voor Tanzu wilt gebruiken, voert u de volgende stappen uit voor elk van uw apps:

  1. Voeg een expliciete app-binding toe om aan te geven dat uw app toepassingsconfiguratieservice voor Tanzu moet gebruiken.

    Notitie

    Wanneer u de bindings-/niet-gekoppelde status wijzigt, moet u de app opnieuw starten of opnieuw implementeren om de wijziging door te voeren.

  2. Configuratiebestandspatronen instellen. Met configuratiebestandspatronen kunt u kiezen welke toepassing en welk profiel de app gebruikt. Zie de sectie Patroon van De Toepassingsconfiguratieservice voor Tanzu gebruiken voor meer informatie.

    Een andere optie is het instellen van de patronen van het configuratiebestand op hetzelfde moment als de implementatie van uw app, zoals wordt weergegeven in het volgende voorbeeld:

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

Metrische gegevens voor

Neem de spring-boot-starter-actuator afhankelijkheid op in de sectie Afhankelijkheden van uw pom.xml-bestand , zoals hier wordt weergegeven:

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

Metrische gegevens worden periodiek opgehaald uit de JMX-eindpunten. U kunt de metrische gegevens visualiseren met behulp van Azure Portal.

Waarschuwing

U moet opgeven spring.jmx.enabled=true in uw configuratie-eigenschap. Anders kunnen metrische gegevens niet worden gevisualiseerd in Azure Portal.

Zie ook

Volgende stappen

In dit artikel hebt u geleerd hoe u uw Java Spring-toepassing configureert voor implementatie in Azure Spring Apps. Zie Een exemplaar van een configuratieserver instellen voor meer informatie over het instellen van een exemplaar van een configuratieserver.

Er zijn meer voorbeelden beschikbaar op GitHub: Azure Spring Apps-voorbeelden.