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 -
注
Cloud Gateway、Eureka Discovery Client、Config 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 ..
クラウドでプロジェクトをテストする
Azure Spring Apps インスタンスの [アプリ] に移動します。
- todo-gateway の登録状態が 1/1 であることを確認します。 この情報は、Spring Cloud Service Registry に正しく登録されていることを示しています。
- マイクロサービスに関する詳細情報を表示するには、 todo-gateway を選択します。
提供されるパブリック URL をコピーして貼り付けます。 この URL は、以降のセクションのために手元に保管しておいてください。
マイクロサービスなどの テスト エンドポイントがありますが、ゲートウェイはインターネット上で直接公開されるため、パブリック URL を使用します。
ゲートウェイは Spring Cloud Service Registry に接続されているため、使用可能なマイクロサービスへのルートが自動的に開きます。その場合、URL パスは /MICROSERVICE-ID/** (MICROSERVICE-ID は大文字である必要があります) の形式となります。
todo-service (XXXXXXXX は、実際の Azure Spring Apps インスタンスの名前に置き換えます) を実行し、curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/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}]