Een toepassing voorbereiden voor implementatie in Azure Spring Cloud
Azure Spring Cloud biedt robuuste services voor het hosten, bewaken, schalen en bijwerken van een Steeltoe-app. In dit artikel wordt beschreven hoe u een bestaande Steeltoe-toepassing voorbereidt voor implementatie in Azure Spring Cloud.
In dit artikel worden de afhankelijkheden, configuratie en code uitgelegd die nodig zijn voor het uitvoeren van een .NET Core Steeltoe-app in Azure Spring Cloud. Zie Deploy your first Spring Boot app in Azure Spring Cloud (Uw eerste app implementeren in Azure Spring Cloud) voor meer informatie over het implementeren van een Azure Spring Cloud.
Notitie
Steeltoe-ondersteuning voor Azure Spring Cloud 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 Cloud ondersteunt:
- .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 Program.Main de methode de methode UseAzureSpringCloudService aan.
Voor Steeltoe 2.4.4 roept u na en na aan UseAzureSpringCloudService ConfigureWebHostDefaults als deze wordt AddConfigServer aangeroepen:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.AddConfigServer()
.UseAzureSpringCloudService();
Roep voor Steeltoe 3.0.0 aan UseAzureSpringCloudService vóór ConfigureWebHostDefaults en vóór een Steeltoe-configuratiecode:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseAzureSpringCloudService()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.AddConfigServer();
Eureka Server-servicedetectie inschakelen
Stel in de configuratiebron die wordt gebruikt wanneer de app wordt uitgevoerd in Azure Spring Cloud in op dezelfde naam als de Azure Spring Cloud-app waarop het spring.application.name project wordt geïmplementeerd.
Als u bijvoorbeeld een .NET-project met de naam implementeert in een Azure Spring Cloud-app met de naam EurekaDataProvider planet-weather-provider het bestand appSettings.json moet de volgende JSON 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 waarbij de waarde http://<app_name> app_name van de spring.application.name doel-app is. Met de volgende code wordt bijvoorbeeld de planet-weather-provider service aanroepen:
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 onderwerp ziet u hoe u een bestaande Java Spring-toepassing voorbereidt voor implementatie naar Azure Spring Cloud. Indien correct geconfigureerd, biedt Azure Spring Cloud krachtige services voor het bewaken, schalen en bijwerken van uw Java Spring Cloud toepassing.
Voordat u dit voorbeeld kunt uitvoeren, kunt u de eenvoudige quickstart uitproberen.
In andere voorbeelden wordt uitgelegd hoe u een toepassing implementeert Azure Spring Cloud wanneer het POM-bestand is geconfigureerd.
In dit artikel worden de vereiste afhankelijkheden uitgelegd en wordt uitgelegd hoe u deze toevoegt aan het POM-bestand.
Java Runtime-versie
Azure Spring Cloud ondersteunt zowel Java 8 als Java 11. Over het algemeen ondersteunt Azure PaaS alleen Java LTS-versies en Azure Spring Cloud ondersteuning voor Java 17 LTS. De hostingomgeving bevat de nieuwste versie van Azul Zulu OpenJDK for Azure. Zie Install the JDK(De JDK installeren) voor meer informatie over Azul Zulu OpenJDK voor Azure.
Spring Boot- en Spring Cloud-versies
Als u een bestaande Spring Boot-toepassing wilt voorbereiden voor implementatie naar Azure Spring Cloud moet u de afhankelijkheden Spring Boot en Spring Cloud opnemen in het POM-bestand van de toepassing, zoals wordt weergegeven in de volgende secties.
Azure Spring Cloud ondersteuning voor de meest recente Spring Boot of Spring Cloud release binnen één maand nadat deze is uitgebracht. U kunt ondersteunde versies Spring Boot van Spring Boot Releases en Spring Cloud versies van Spring Cloud Releases.
De volgende tabel bevat de ondersteunde Spring Boot en Spring Cloud combinaties:
| Spring Boot versie | Spring Cloud-versie |
|---|---|
| 2.3.x | Hoxton.SR8+ |
| 2.4.x, 2.5.x | 2020.0 oftewel Ilford + |
Notitie
- Voer een Spring Boot naar 2.5.2 of 2.4.8 om het volgende CVE-rapport CVE-2021-22119 te gebruiken: Denial-of-Service-aanval met spring-security-oauth2-client. Als u Spring Security gebruikt, moet u deze upgraden naar 5.5.1, 5.4.7, 5.3.10 of 5.2.11.
- Er is een probleem vastgesteld met Spring Boot 2.4.0 voor TLS-verificatie tussen apps en Spring Cloud Service Registry. Gebruik 2.4.1 of hoger. Raadpleeg veelgestelde vragen voor de tijdelijke oplossing als u 2.4.0 wilt gebruiken.
Afhankelijkheden voor Spring Boot versie 2.3
Voeg Spring Boot versie 2.3 de volgende afhankelijkheden toe aan het POM-bestand van de toepassing.
<!-- Spring Boot dependencies -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
<!-- Spring Cloud dependencies -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Afhankelijkheden voor Spring Boot versie 2.4/2.5
Voor Spring Boot versie 2.4/2.5 voegt u de volgende afhankelijkheden toe aan het POM-bestand van de toepassing.
<!-- Spring Boot dependencies -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.8</version>
</parent>
<!-- Spring Cloud dependencies -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Waarschuwing
Geef niet op server.port in uw configuratie. Azure Spring Cloud wordt deze instelling overgezet naar een vast poortnummer. Respecteer deze instelling ook en geef geen serverpoort op in uw code.
Andere aanbevolen afhankelijkheden voor het inschakelen Azure Spring Cloud functies
Als u de ingebouwde functies van Azure Spring Cloud serviceregister naar gedistribueerde tracering wilt inschakelen, moet u ook de volgende afhankelijkheden in uw toepassing opnemen. U kunt een aantal van deze afhankelijkheden verwijderen als u geen bijbehorende functies voor de specifieke apps nodig hebt.
Serviceregister
Als u de beheerde Azure Service Registry-service wilt gebruiken, moet u de afhankelijkheid opnemen in het spring-cloud-starter-netflix-eureka-client 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 opgenomen als omgevingsvariabelen met uw app. Toepassingen kunnen zichzelf registreren bij de Service Registry-server en andere afhankelijke microservices ontdekken.
EnableDiscoveryClient-aantekening
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 wilt inschakelen, moet u de volgende afhankelijkheid opnemen in de spring-cloud-config-client sectie afhankelijkheden van pom.xml bestand:
<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>
Waarschuwing
Geef niet op spring.cloud.config.enabled=false in uw bootstrapconfiguratie. Anders werkt uw toepassing niet meer met Config Server.
Metrische gegevens
Neem de spring-boot-starter-actuator afhankelijkheid op in de sectie afhankelijkheden van uw pom.xml zoals hier wordt weergegeven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Metrische gegevens worden periodiek uit de JMX-eindpunten gehaald. U kunt de metrische gegevens visualiseren met behulp van de Azure Portal.
Waarschuwing
Geef op spring.jmx.enabled=true in uw configuratie-eigenschap. Anders kunnen metrische gegevens niet worden gevisualiseerd in Azure Portal.
Zie ook
- Toepassingslogboeken en metrische gegevens analyseren
- Uw configuratieserver instellen
- Spring-snelstartgids
- Spring Boot documentatie
Volgende stappen
In dit onderwerp hebt u geleerd hoe u uw Java Spring-toepassing configureert voor implementatie naar Azure Spring Cloud. Zie Set up a Config Server instance (Een Config Server instellen) voor meer informatie over het instellen van een Config Server-instantie.
Meer voorbeelden zijn beschikbaar in GitHub: Azure Spring Cloud-voorbeelden.