Uygulamayı Azure Spring Cloud'de dağıtım için hazırlama

Azure Spring Cloud Steeltoe uygulamasını barındırmak, izlemek, ölçeklendirmek ve güncelleştirmek için sağlam hizmetler sağlar. Bu makalede, mevcut bir Steeltoe uygulamasının dağıtım için nasıl hazır Azure Spring Cloud.

Bu makalede, bir .NET Core Steeltoe uygulamasını farklı bir uygulamada çalıştırmak için gereken bağımlılıklar, yapılandırma ve kod Azure Spring Cloud. Bir uygulamayı Azure Spring Cloud'a dağıtma hakkında bilgi için bkz. Spring Boot'de Azure Spring Cloud.

Not

Azure Spring Cloud Steeltoe desteği şu anda genel önizleme olarak sunulmaktadır. Genel önizleme teklifleri, müşterilerin resmi sürümden önce yeni özelliklerle denemeler denemesine olanak sağlar. Genel önizleme özellikleri ve hizmetleri üretim kullanımına uygun değildir. Önizlemeler sırasında destek hakkında daha fazla bilgi için bkz. SSS veya Destek isteği.

Desteklenen sürümler

Azure Spring Cloud şunları destekler:

  • .NET Core 3.1
  • Steeltoe 2.4 ve 3.0

Bağımlılıklar

Steeltoe 2.4 için proje dosyasına en son Microsoft.Azure.SpringCloud.Client 1.x.x paketini ekleyin:

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

Steeltoe 3.0 için proje dosyasına en son Microsoft.Azure.SpringCloud.Client 2.x.x paketini ekleyin:

<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'yi güncelleştirme

yönteminde Program.Main yöntemini UseAzureSpringCloudService çağırma.

Steeltoe 2.4.4 için, çağrıldıktan UseAzureSpringCloudService ConfigureWebHostDefaults sonra ve sonra AddConfigServer çağrısı:

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

Steeltoe 3.0.0 için herhangi bir Steeltoe yapılandırma kodu öncesinde ve UseAzureSpringCloudService ConfigureWebHostDefaults öncesinde çağrısı:

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

Eureka Server hizmet keşfini etkinleştirme

Uygulama Azure Spring Cloud çalıştırıldığında kullanılacak yapılandırma kaynağında, projenin dağıtılacağı Azure Spring Cloud uygulamayla spring.application.name aynı adla ayarlayın.

Örneğin, appSettings.json adlı bir Azure Spring Cloud uygulamasına adlı bir .NET projesi dağıtırsanız EurekaDataProvider planet-weather-provider aşağıdaki JSON'u içermesi gerekir:

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

Hizmet bulma kullanma

Eureka Server hizmet keşfini kullanarak bir hizmeti aramak için hedef uygulamanın değeri olan yere HTTP http://<app_name> app_name istekleri spring.application.name girin. Örneğin, aşağıdaki kod hizmeti planet-weather-provider çağırabilir:

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

Bu konu başlığında, var olan bir Java Spring uygulamasının dağıtım için nasıl hazır Azure Spring Cloud. Doğru şekilde yapılandırıldısa, Azure Spring Cloud Java uygulamalarınızı izlemek, ölçeklendirmek ve güncelleştirmek için sağlam Spring Cloud sağlar.

Bu örneği çalıştırmadan önce temel hızlı başlangıç 'i sın.

Diğer örneklerde POM dosyası yapılandırıldığında uygulamanın Azure Spring Cloud nasıl dağıtın açıklandı.

Bu makalede gerekli bağımlılıklar ve bunları POM dosyasına ekleme açıklanmıştır.

Java Çalışma Zamanı sürümü

Azure Spring Cloud Java 8 ve Java 11'i destekler. Genel olarak, Azure PaaS yalnızca Java LTS sürümlerini destekler ve Azure Spring Cloud Java 17 LTS'i destekleyecektir. Barındırma ortamı, Azure için Azul Zulu OpenJDK'nin en son sürümünü içerir. Azure için Azul Zulu OpenJDK hakkında daha fazla bilgi için bkz. JDK'yi yükleme.

Spring Boot ve Spring Cloud sürümleri

Var olan bir Spring Boot uygulamasını Azure Spring Cloud dağıtıma hazırlamak için Spring Boot ve Spring Cloud aşağıdaki bölümlerde gösterildiği gibi uygulama POM dosyasına bağımlılıkları dahil etmektir.

Azure Spring Cloud yayından sonra Spring Boot veya Spring Cloud bir ay içinde en son sürümü destekleyecektir. Spring Boot Sürümlerinden desteklenen Spring Boot sürümleri ve Spring Cloud sürümlerini Spring Cloud.

Aşağıdaki tabloda desteklenen Spring Boot ve Spring Cloud listele...

Spring Boot sürümü Spring Cloud sürümü
2.3.x Hoxton.SR8+
2.4.x, 2.5.x 2020.0 diğer adıyla Ilford +

Not

  • Lütfen Spring Boot CVE-2021-22119: spring-security-oauth2-clientile Hizmet Reddi saldırısına yönelik şu CVE raporunu ele almak için Spring Boot'ı 2.5.2 veya 2.4.8 sürümüne yükseltin. Spring Security kullanıyorsanız lütfen 5.5.1, 5.4.7, 5.3.10 veya 5.2.11'e yükseltin.
  • Uygulamalar ve Spring Cloud Service Registry arasında TLS kimlik doğrulamasında Spring Boot 2.4.0 ile ilgili bir sorun belirlendi, lütfen 2.4.1 veya üzerini kullanın. 2.4.0 kullanmakta ısrar ediyorsanız geçici çözüm için lütfen SSS bölümüne bakın.

2.3 Spring Boot için bağımlılıklar

Sürüm Spring Boot 2.3 için uygulama POM dosyasına aşağıdaki bağımlılıkları ekleyin.

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

2.4/2.5 Spring Boot için bağımlılıklar

Sürüm Spring Boot 2.4/2.5 için uygulama POM dosyasına aşağıdaki bağımlılıkları ekleyin.

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

Uyarı

Yapılandırmanız içinde server.port belirtme. Azure Spring Cloud ayarı sabit bir bağlantı noktası numarasına devredecek. Ayrıca bu ayara da dikkat edin ve kodunda sunucu bağlantı noktası belirtmeyin.

Hizmet kayıt defterinden dağıtılmış izlemeye Azure Spring Cloud yerleşik özelliklerini etkinleştirmek için uygulamanıza aşağıdaki bağımlılıkları da dahil etmek gerekir. Belirli uygulamalar için ilgili özelliklere ihtiyacınız yoksa bu bağımlılıklardan bazılarını bırakın.

Hizmet Kayıt Defteri

Yönetilen Azure Service Registry hizmetini kullanmak için bağımlılığı spring-cloud-starter-netflix-eureka-client aşağıda gösterildiği gibi pom.xml dosyasına dahil edin:

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

Service Registry sunucusunun uç noktası, uygulamanıza ortam değişkenleri olarak otomatik olarak eklenir. Uygulamalar kendilerini Service Registry sunucusuna kaydeder ve diğer bağımlı mikro hizmetleri keşfeder.

EnableDiscoveryClient ek açıklaması

Aşağıdaki ek açıklamayı uygulama kaynak koduna ekleyin.

@EnableDiscoveryClient

Örneğin, önceki örneklerden pmetricmetrics uygulamasına bakın:

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

Dağıtılmış Yapılandırma

Dağıtılmış Yapılandırma'yi etkinleştirmek için aşağıdaki spring-cloud-config-client bağımlılığı dosyanın bağımlılıklar pom.xml dahil edin:

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

Uyarı

Bootstrap spring.cloud.config.enabled=false yapılandırmanızı belirtme. Aksi takdirde, uygulamanın çalışma süresi Config Server.

Ölçümler

Bağımlılığı, spring-boot-starter-actuator aşağıda gösterildiği gibi dosyanın pom.xml bölümüne dahil edin:

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

Ölçümler JMX uç noktalarından düzenli aralıklarla çekilir. Ölçümleri görselleştirmek için aşağıdaki Azure portal.

Uyarı

Lütfen yapılandırma spring.jmx.enabled=true özelliğinde belirtin. Aksi takdirde ölçümler görselleştirilene Azure portal.

Ayrıca bkz.

Sonraki adımlar

Bu konu başlığında, Java Spring uygulamanızı uygulamanıza dağıtım için yapılandırmayı Azure Spring Cloud. Bir Config Server örneği ayarlama hakkında bilgi edinmek için bkz. Config Server ayarlama.

Daha fazla örnek için GitHub: Azure Spring Cloud Örnekleri.