Spring Cloud Gateway をビルドする

完了

このモジュールでは、Spring Cloud Gateway をビルドし、Azure Spring Apps にデプロイします。

ゲートウェイは、パブリック HTTP トラフィックをマイクロサービスにルーティングするために使用されます。

  • ルーティング ロジックを処理します。
  • マイクロサービス (公開されません) へのアクセスがセキュリティで保護されます。
  • HTTP レートを制限するなど、サービスの品質 (QoS) 機能も使用できます。

Spring Cloud Gateway を作成する

ゲートウェイを作成するには、コマンド ラインで https://start.spring.io を使用します。

curl https://start.spring.io/starter.tgz -d type=maven-project -d dependencies=cloud-gateway,cloud-eureka,cloud-config-client -d baseDir=todo-gateway -d bootVersion=3.1.5.RELEASE -d javaVersion=17 | tar -xzvf -

Note

Cloud GatewayEureka Discovery ClientConfig Client のコンポーネントを使用します。

アプリケーションを構成する

src/main/resources/application.properties 構成ファイルに、次のプロパティを追加します。

spring.main.allow-bean-definition-overriding=true
spring.cloud.gateway.discovery.locator.enabled=true
  • spring.main.allow-bean-definition-overriding=true パーツは、Azure Spring Apps クライアント ライブラリで構成されている Spring Cloud Discovery Server ビーンを使用するように Spring Cloud Gateway を構成するというものです。
  • spring.cloud.gateway.discovery.locator.enabled=true の部分では、Spring Cloud Service Registry を使用して利用可能なマイクロサービスを検出するように Spring Cloud Gateway を構成します。

Azure Spring Apps にアプリケーションを作成する

前のモジュールと同様に、Azure Spring Apps インスタンスに特定の todo-gateway アプリケーションを作成します。 このアプリケーションはゲートウェイであるため、一般公開されるように --assign-endpoint フラグを追加します。

az spring app create --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --runtime-version Java_17 --assign-endpoint

アプリケーションをデプロイする

これで、todo-gateway プロジェクトをビルドし、Azure Spring Apps に送信できるようになりました。

cd todo-gateway
./mvnw clean package -DskipTests
az spring app deploy --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --artifact-path target/demo-0.0.1-SNAPSHOT.jar
cd ..

クラウドでプロジェクトをテストする

  1. Azure Spring Apps インスタンスの [アプリ] に移動します。

    1. todo-gateway の登録状態が 1/1 になっていることを確認します。 この情報は、Spring Cloud Service Registry に正しく登録されていることを示しています。
    2. todo-gateway を選択し、マイクロサービスの詳細情報を取得します。
  2. 提供されるパブリック URL をコピーして貼り付けます。 この URL は、以降のセクションのために手元に保管しておいてください。

    マイクロサービスの場合のようにテスト エンドポイントがありますが、ゲートウェイはインターネット上で直接公開されるため、パブリック URL を使用しましょう。

ゲートウェイは Spring Cloud Service Registry に接続されているため、使用可能なマイクロサービスへのルートが自動的に開きます。その場合、URL パスは /MICROSERVICE-ID/** (MICROSERVICE-ID は大文字である必要があります) の形式となります。

curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/ (XXXXXXXX は、実際の Azure Spring Apps インスタンスの名前に置き換えます) を実行し、todo-service マイクロサービス エンドポイントをテストします。

前のモジュールと同様に、このコマンドの結果は、MySQL データベースに最初に挿入された 3 つの項目となります。

[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]