Förbereda ett program för distribution i Azure Spring Cloud

Azure Spring Cloud tillhandahåller robusta tjänster för att vara värd för, övervaka, skala och uppdatera en Steeltoe-app. Den här artikeln visar hur du förbereder ett befintligt Installationsprogram för distribution till Azure Spring Cloud.

Den här artikeln förklarar de beroenden, konfigurationer och kod som krävs för att köra en .NET Core Configurationtoe-app i Azure Spring Cloud. Information om hur du distribuerar ett program till Azure Spring Cloud finns i Distribuera din första Spring Boot i Azure Spring Cloud.

Anteckning

För närvarande erbjuds stöd för Azure Spring Cloud som en offentlig förhandsversion. Med offentliga förhandsversioner kan kunder experimentera med nya funktioner innan de släpps officiellt. Funktioner och tjänster i den offentliga förhandsversionen är inte avsedda för produktionsanvändning. Mer information om support under förhandsversioner finns i Vanliga frågor och svar eller skapa en Supportbegäran.

Versioner som stöds

Azure Spring Cloud stöder:

  • .NET Core 3.1
  • Metalltoe 2.4 och 3.0

Beroenden

För Steeltoe 2.4 lägger du till det senaste Microsoft.Azure.SpringCloud.Client 1.x.x-paketet i projektfilen:

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

FörMolntoe 3.0 lägger du till det senaste Microsoft.Azure.SpringCloud.Client 2.x.x-paketet i projektfilen:

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

Uppdatera Program.cs

I metoden Program.Main anropar du UseAzureSpringCloudService metoden .

För Metalltoe 2.4.4 UseAzureSpringCloudService anropar du efter ConfigureWebHostDefaults och efter om den AddConfigServer anropas:

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

För Configurationtoe 3.0.0 anropar du UseAzureSpringCloudService före och före någon ConfigureWebHostDefaults ConfigurationToe-konfigurationskod:

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

Aktivera identifiering av Tjänsten Eureka Server

I konfigurationskällan som ska användas när appen körs i Azure Spring Cloud anger du till samma namn som den Azure Spring Cloud som projektet spring.application.name ska distribueras till.

Om du till exempel distribuerar ett .NET-projekt med namnet till en Azure Spring Cloud-app med namnet EurekaDataProvider planet-weather-provider filen appSettings.json bör den innehålla följande JSON:

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

Använda tjänstidentifiering

Om du vill anropa en tjänst med hjälp av tjänstidentifiering för Eureka Server gör du HTTP-begäranden till där http://<app_name> app_name är värdet för spring.application.name målappen. Följande kod anropar till exempel planet-weather-provider tjänsten:

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

Det här avsnittet visar hur du förbereder ett befintligt Java Spring-program för distribution till Azure Spring Cloud. Om den är korrekt konfigurerad Azure Spring Cloud robusta tjänster för att övervaka, skala och uppdatera Ditt Java Spring Cloud program.

Innan du kör det här exemplet kan du prova den grundläggande snabbstarten.

Andra exempel förklarar hur du distribuerar ett program Azure Spring Cloud när POM-filen konfigureras.

Den här artikeln förklarar de nödvändiga beroendena och hur du lägger till dem i POM-filen.

Java Runtime-version

Azure Spring Cloud stöder både Java 8 och Java 11. I allmänhet stöder Azure PaaS endast Java LTS-versioner och Azure Spring Cloud stöder Java 17 LTS. Värdmiljön innehåller den senaste versionen av Azul Zulu OpenJDK för Azure. Mer information om Azul Zulu OpenJDK för Azure finns i Installera JDK.

Spring Boot och Spring Cloud versioner

För att förbereda ett Spring Boot-program för distribution till Azure Spring Cloud inkluderar du Spring Boot- och Spring Cloud-beroenden i POM-filen för programmet enligt följande avsnitt.

Azure Spring Cloud stöder den senaste Spring Boot eller Spring Cloud versionen inom en månad efter att den har släppts. Du kan hämta Spring Boot versioner från Spring Boot versioner och Spring Cloud versioner från Spring Cloud versioner.

I följande tabell visas de kombinationer Spring Boot och Spring Cloud stöds:

Spring Boot version Spring Cloud version
2.3.x Hoxton.SR8+
2.4.x, 2.5.x 2020.0 aka Ilford +

Anteckning

  • Uppgradera Spring Boot till 2.5.2 eller 2.4.8 för att åtgärda följande CVE-rapport CVE-2021-22119: Denial-of-Service-attack med spring-security-oauth2-client. Om du använder Spring Security uppgraderar du det till 5.5.1, 5.4.7, 5.3.10 eller 5.2.11.
  • Ett problem har identifierats med Spring Boot 2.4.0 vid TLS-autentisering mellan appar och Spring Cloud Service Registry. Använd 2.4.1 eller högre. Se Vanliga frågor och svar för en lösning om du vill använda 2.4.0.

Beroenden för Spring Boot version 2.3

För Spring Boot version 2.3 lägger du till följande beroenden i POM-filen för programmet.

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

Beroenden för Spring Boot version 2.4/2.5

För Spring Boot version 2.4/2.5 lägger du till följande beroenden i POM-filen för programmet.

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

Varning

Ange inte server.port i konfigurationen. Azure Spring Cloud över den här inställningen till ett fast portnummer. Respektera även den här inställningen och ange inte serverporten i koden.

Om du vill aktivera de inbyggda funktionerna i Azure Spring Cloud från tjänstregistret till distribuerad spårning måste du även inkludera följande beroenden i ditt program. Du kan ta bort vissa av dessa beroenden om du inte behöver motsvarande funktioner för de specifika apparna.

Service Registry

Om du vill använda den hanterade Azure Service Registry-tjänsten spring-cloud-starter-netflix-eureka-client inkluderar du beroendet i pom.xml-filen enligt följande:

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

Slutpunkten för Service Registry-servern matas automatiskt in som miljövariabler med din app. Program kan registrera sig själva med Service Registry-servern och identifiera andra beroende mikrotjänster.

EnableDiscoveryClient-anteckning

Lägg till följande anteckning i programmets källkod.

@EnableDiscoveryClient

Se till exempel programmet symmetrymetrics från tidigare exempel:

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

Distribuerad konfiguration

Om du vill aktivera distribuerad konfiguration inkluderar du spring-cloud-config-client följande beroende i avsnittet beroenden i din pom.xml fil:

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

Varning

Ange inte i spring.cloud.config.enabled=false din bootstrap-konfiguration. Annars slutar programmet att fungera med Config Server.

Mått

Inkludera spring-boot-starter-actuator beroendet i avsnittet beroenden i din pom.xml som visas här:

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

Mått hämtas regelbundet från JMX-slutpunkterna. Du kan visualisera måtten med hjälp av Azure Portal.

Varning

Ange i spring.jmx.enabled=true konfigurationsegenskapen. Annars kan mått inte visualiseras i Azure Portal.

Se även

Nästa steg

I det här avsnittet har du lärt dig hur du konfigurerar ditt Java Spring-program för distribution till Azure Spring Cloud. Information om hur du ställer in en Config Server-instans finns i Konfigurera en Config Server instans.

Fler exempel finns på GitHub: Azure Spring Cloud Exempel.