Azure Spring Apps にデプロイするアプリケーションを準備する
Note
Basic、Standard、Enterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象:✅ Basic/Standard ✅ Enterprise
この記事では、Azure Spring Apps にデプロイするために既存の Steeltoe アプリケーションを準備する方法について説明します。 Azure Spring Apps は、Steeltoe アプリをホスト、監視、スケール、更新するための堅牢なサービスを提供しています。
この記事では、Azure Spring Apps で .NET Core Steeltoe アプリを実行するために必要な依存関係、構成、およびコードについて説明します。 アプリケーションを Azure Spring Apps にデプロイする方法については、初めての Spring Boot アプリを Azure Spring Apps にデプロイする方法に関するページを参照してください。
Note
Azure Spring Apps の Steeltoe のサポートは、現時点ではパブリック プレビューとして提供されています。 パブリック プレビュー オファリングにより、お客様は公式リリースの前に新機能を試すことができます。 パブリック プレビューの機能とサービスは、運用環境での使用を目的としたものではありません。 プレビュー段階のサポートの詳細については、FAQ を参照するか、サポート リクエストを提出してください。
サポートされているバージョン
Azure Spring Apps では、次のものがサポートされています。
- .NET Core 3.1
- Steeltoe 2.4 および 3.0
依存関係
Steeltoe 2.4 の場合は、最新の 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>
Steeltoe 3.0 の場合は、最新の 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>
Program.cs を更新する
Program.Main
メソッドで、UseAzureSpringCloudService
メソッドを呼び出します。
Steeltoe 2.4.4 の場合は、ConfigureWebHostDefaults
の後に、および AddConfigServer
が呼び出される場合はその後に UseAzureSpringCloudService
を呼び出します。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.AddConfigServer()
.UseAzureSpringCloudService();
Steeltoe 3.0.0 の場合は、ConfigureWebHostDefaults
および Steeltoe 構成コードの前に UseAzureSpringCloudService
を呼び出します。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseAzureSpringCloudService()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.AddConfigServer();
Eureka Server サービスの検出を有効にする
Note
Eureka は Enterprise プランには適用できません。 Enterprise プランを使用している場合、サービス レジストリの使用に関するページを参照してください。
アプリが Azure Spring Apps で実行されるときに使用される構成ソースで、spring.application.name
をプロジェクトのデプロイ先の Azure Spring Apps アプリと同じ名前に設定します。
たとえば、EurekaDataProvider
という名前の .NET プロジェクトを planet-weather-provider
という名前の Azure Spring Apps アプリにデプロイする場合、appSettings.json ファイルには次の JSON を含める必要があります。
"spring": {
"application": {
"name": "planet-weather-provider"
}
}
サービス検出を使用する
Eureka Server のサービス検出を使用してサービスを呼び出すには、http://<app_name>
に HTTP 要求を送信します (この app_name
はターゲット アプリの spring.application.name
の値です)。 たとえば、次のコードでは 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]),
};
}
この記事では、Azure Spring Apps にデプロイできるように既存の Java Spring アプリケーションを準備する方法について説明します。 適切に構成すると、Azure Spring Apps によって Java Spring アプリケーションの監視、スケーリング、更新を行う堅牢なサービスが実現します。
この例を実行する前に、基本的なクイックスタートを試してみることができます。
POM ファイルが構成されているときにアプリケーションを Azure Spring Apps にデプロイする方法については、その他の例で説明しています。
この記事では、必要な依存関係とそれらを POM ファイルに追加する方法について説明します。
Java ランタイム バージョン
詳細については、Azure Spring Apps に関する FAQ の「Java ランタイムと OS バージョン」セクションを参照してください。
Spring Boot と Spring Cloud のバージョン
既存の Spring Boot アプリケーションを Azure Spring Apps にデプロイできるよう準備するには、以降のセクションに示したように、アプリケーションの POM ファイルに Spring Boot と Spring Cloud の依存関係を追加します。
Azure Spring Apps では、リリースの 30 日後から最新の Spring Boot または Spring Cloud メジャー バージョンがサポートされます。 Azure Spring Apps では、最新のマイナー バージョンがリリース直後にサポートされます。 サポートされる Spring Boot のバージョンは Spring Boot Releases から、Spring Cloud のバージョンは Spring Cloud Releases から入手できます。
サポートされている Spring Boot と Spring Cloud の組み合わせを次の表に示します。
Spring Boot のバージョン | Spring Cloud のバージョン | サポート終了 |
---|---|---|
3.2.x | 2023.0.x (Leyton とも呼ばれます) | 2024-11-23 |
3.1.x | 2022.0.3+ (Kilburn とも呼ばれています) | 2024-05-18 |
3.0.x | 2022.0.3+ (Kilburn とも呼ばれています) | 2023-11-24 |
2.7.x | 2021.0.3+ (Jubilee とも呼ばれています) | 2023-11-24 |
詳細については、次のページを参照してください。
- Java、Spring Boot などのバージョンのサポート
- Spring Boot のサポート
- Spring Cloud Config のサポート
- Spring Cloud Netflix のサポート
- Spring Cloud を既存の Spring Boot アプリケーションに追加する
Azure Spring Apps の機能を有効にするためのその他の推奨される依存関係
サービス レジストリから分散トレースまでの Azure Spring Apps の組み込み機能を有効にするには、アプリケーションに次の依存関係も含める必要があります。 特定のアプリに対応する機能が不要な場合は、これらの依存関係の一部を削除できます。
サービス レジストリ
マネージド Azure Service Registry サービスを使用するには、次に示すように、pom.xml ファイルに spring-cloud-starter-netflix-eureka-client
依存関係を含めます。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
サービス レジストリ サーバーのエンドポイントは、アプリで環境変数として自動的に挿入されます。 アプリケーションはサービス レジストリ サーバーに登録され、他の依存アプリケーションを検出できます。
EnableDiscoveryClient 注釈
アプリケーションのソース コードに次の注釈を追加します。
@EnableDiscoveryClient
たとえば、前出の例の piggymetrics アプリケーションを見てみましょう。
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);
}
}
分散構成
分散構成を有効にするには、pom.xml ファイルの依存関係セクションに次の spring-cloud-config-client
の依存関係を含めます。
<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>
警告
ブートストラップ構成で spring.cloud.config.enabled=false
を指定しないでください。 そうしないと、アプリケーションと Config Server の連携が停止します。
メトリック
次に示すように、pom.xml ファイルの依存関係セクションに spring-boot-starter-actuator
の依存関係を含めます。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
メトリックは JMX エンドポイントから定期的に取得されます。 メトリックを視覚化するには、Azure portal を使用します。
警告
構成プロパティに spring.jmx.enabled=true
を指定する必要があります。 そうしないと、Azure portal でメトリックを視覚化できません。
関連項目
次のステップ
この記事では、Java Spring アプリケーションを Azure Spring Apps へのデプロイ用に構成する方法について学習しました。 Config Server インスタンスを設定する方法については、Config Server インスタンスの設定に関するページを参照してください。
その他のサンプルを GitHub で入手できます (Azure Spring Apps のサンプル)。