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 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 は大文字である必要があります) の形式となります。
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}]