Příprava aplikace pro nasazení v Azure Spring Cloud
Azure Spring Cloud poskytuje robustní služby pro hostování, monitorování, škálování a aktualizaci aplikace Steeltoe. Tento článek ukazuje, jak připravit existující aplikaci Steeltoe pro nasazení do Azure Spring Cloud.
Tento článek vysvětluje závislosti, konfiguraci a kód, které jsou potřeba ke spuštění aplikace .NET Core Steeltoe v Azure Spring Cloud. Informace o tom, jak nasadit aplikaci do Azure Spring Cloud, najdete v tématu Nasazení první Spring Boot aplikace v Azure Spring Cloud.
Poznámka
Podpora Steeltoe pro Azure Spring Cloud se v současné době nabízí jako veřejná verze Preview. Nabídky ve verzi Public Preview umožňují zákazníkům experimentovat s novými funkcemi před jejich oficiálním vydáním. Funkce a služby ve verzi Public Preview nejsou určeny pro produkční použití. Další informace o podpoře během období Preview najdete v nejčastějších dotazech nebo v Support request .
Podporované verze
Azure Spring Cloud podporuje:
- .NET Core 3.1
- Steeltoe 2.4 a 3.0
Závislosti
Pro Steeltoe 2.4 přidejte do souboru projektu nejnovější balíček Microsoft.Azure.SpringCloud.Client 1.x.x:
<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>
Pro Steeltoe 3.0 přidejte do souboru projektu nejnovější balíček Microsoft.Azure.SpringCloud.Client 2.x.x:
<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>
Aktualizace souboru Program.cs
V Program.Main metodě zavolejte UseAzureSpringCloudService metodu .
V případě Steeltoe 2.4.4 volejte po a UseAzureSpringCloudService ConfigureWebHostDefaults AddConfigServer po, pokud je volána:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.AddConfigServer()
.UseAzureSpringCloudService();
Pro Steeltoe 3.0.0 volejte před UseAzureSpringCloudService ConfigureWebHostDefaults a před libovolným konfiguračním kódem Steeltoe:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseAzureSpringCloudService()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.AddConfigServer();
Povolení zjišťování služby Serveru Eureka
Ve zdroji konfigurace, který se použije při spuštění aplikace v Azure Spring Cloud, nastavte stejný název jako aplikace Azure Spring Cloud, do které se projekt spring.application.name nasadí.
Pokud například nasadíte projekt .NET s názvem do aplikace Azure Spring Cloud s názvem EurekaDataProvider planet-weather-provider appSettings.json, měl by obsahovat následující json:
"spring": {
"application": {
"name": "planet-weather-provider"
}
}
Použití zjišťování služeb
Pokud chcete volat službu pomocí zjišťování služby Serveru Eureka, proveďte požadavky HTTP na adresu , kde je hodnota http://<app_name> app_name cílové spring.application.name aplikace. Například následující kód volá planet-weather-provider službu:
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]),
};
}
Toto téma ukazuje, jak připravit existující aplikaci Java Spring pro nasazení do Azure Spring Cloud. Pokud je konfigurace Azure Spring Cloud, poskytuje robustní služby pro monitorování, škálování a aktualizaci Spring Cloud Java.
Před spuštěním tohoto příkladu můžete vyzkoušet základní rychlý start.
Další příklady vysvětlují, jak nasadit aplikaci do Azure Spring Cloud, když je soubor POM nakonfigurovaný.
Tento článek vysvětluje požadované závislosti a postup jejich přidání do souboru POM.
Verze modulu Java Runtime
Azure Spring Cloud podporuje Javu 8 i Javu 11. Obecně platí, že Azure PaaS podporuje pouze verze Java LTS a Azure Spring Cloud bude podporovat Javu 17 LTS. Hostitelské prostředí obsahuje nejnovější verzi sady Azul Zulu OpenJDK pro Azure. Další informace o sady Azul Zulu OpenJDK pro Azure najdete v tématu Instalace sady JDK.
Spring Boot a Spring Cloud verze
Pokud chcete připravit existující Spring Boot aplikaci pro nasazení do Azure Spring Cloud, zahrřte do souboru POM aplikace závislosti Spring Boot a Spring Cloud, jak je znázorněno v následujících částech.
Azure Spring Cloud bude podporovat nejnovější verzi Spring Boot nebo Spring Cloud do jednoho měsíce od jeho vydání. Podporované verze Spring Boot můžete získat z Spring Boot vydání a Spring Cloud z Spring Cloud verzí.
Následující tabulka uvádí podporované kombinace Spring Boot a Spring Cloud:
| Spring Boot verze | Spring Cloud verze |
|---|---|
| 2.3.x | Hoxton.SR8+ |
| 2.4.x, 2.5.x | 2020.0 nebo také Ilford + |
Poznámka
- Upgradujte Spring Boot na verzi 2.5.2 nebo 2.4.8, abyste řeší následující sestavu CVE CVE-2021-22119: Útok DoS s klientem spring-security-oauth2-client. Pokud používáte Spring Security, upgradujte ho na verzi 5.5.1, 5.4.7, 5.3.10 nebo 5.2.11.
- Zjistili jsme problém s Spring Boot 2.4.0 při ověřování TLS mezi aplikacemi a službou Spring Cloud Service Registry. Použijte prosím 2.4.1 nebo vyšší. Pokud trváte na používání 2.4.0, projděte si nejčastější dotazy k alternativnímu řešení.
Závislosti pro Spring Boot verze 2.3
Pro Spring Boot verze 2.3 přidejte do souboru POM aplikace následující závislosti.
<!-- 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>
Závislosti pro Spring Boot verze 2.4/2.5
Pro Spring Boot verze 2.4/2.5 přidejte do souboru POM aplikace následující závislosti.
<!-- 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>
Upozornění
Nezadáte server.port v konfiguraci. Azure Spring Cloud toto nastavení překrýt pevným číslem portu. Respektujte také toto nastavení a nezadáte port serveru ve vašem kódu.
Další doporučené závislosti pro povolení Azure Spring Cloud funkcí
Pokud chcete povolit integrované funkce služby Azure Spring Cloud z registru služby na distribuované trasování, musíte do své aplikace zahrnout také následující závislosti. Pokud nepotřebujete odpovídající funkce pro konkrétní aplikace, můžete některé z těchto závislostí vypustit.
Registr služby
Pokud chcete použít spravovanou službu Azure Service Registry, zahrpište závislost spring-cloud-starter-netflix-eureka-client do pom.xml, jak je znázorněno tady:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
Koncový bod serveru registru služby se do vaší aplikace automaticky injektuje jako proměnné prostředí. Aplikace se mohou zaregistrovat na serveru registru služby a zjistit další závislé mikroslužby.
Anotace EnableDiscoveryClient
Do zdrojového kódu aplikace přidejte následující poznámku.
@EnableDiscoveryClient
Podívejte se například na aplikaci pimetrics z předchozích příkladů:
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);
}
}
Distribuovaná konfigurace
Pokud chcete povolit distribuovanou konfiguraci, zahrpište následující závislost do oddílu závislosti spring-cloud-config-client vašeho pom.xml souboru:
<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>
Upozornění
V konfiguraci spring.cloud.config.enabled=false bootstrap nezadáte . Jinak vaše aplikace přestane pracovat s Config Server.
Metriky
Závislost spring-boot-starter-actuator zahršete do oddílu závislosti vašeho souboru pom.xml, jak je znázorněno zde:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Metriky se pravidelně natahuje z koncových bodů JMX. Metriky můžete vizualizovat pomocí Azure Portal.
Upozornění
Zadejte prosím spring.jmx.enabled=true ve své konfigurační vlastnosti. Jinak není možné metriky vizualizovat v Azure Portal.
Viz také
- Analýza aplikačních protokolů a metrik
- Nastavení konfiguračního serveru
- Úvodní příručka ke Springu
- Spring Boot dokumentace
Další kroky
V tomto tématu jste zjistili, jak nakonfigurovat aplikaci Java Spring pro nasazení do Azure Spring Cloud. Informace o nastavení instance Config Server najdete v tématu Nastavení instance Config Server .
Další ukázky jsou k dispozici na GitHub: Azure Spring Cloud Samples.