Создание шлюза Spring Cloud
В этом модуле мы создадим шлюз Spring Cloud и развернем его в Azure Spring Apps.
Шлюзы используются для маршрутизации общедоступного HTTP-трафика в микрослужбы:
- Они обрабатывают логику маршрутизации.
- Они защищают доступ к микрослужбам, которые не будут общедоступными.
- Они также могут иметь возможности проверки качества обслуживания (QoS), такие как ограничение скорости HTTP.
Создание шлюза Spring Cloud
Для создания шлюза мы используем 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
является настройка Spring Cloud Gateway для использования сервера Spring Cloud Discovery Server, настроенного в клиентской библиотеке Azure Spring Apps. - Часть
spring.cloud.gateway.discovery.locator.enabled=true
служит для настройки шлюза Spring Cloud на использование реестра службы Spring Cloud для обнаружения доступных микрослужб.
Создание приложения в Azure Spring Apps
Как и в предыдущем модуле, создайте конкретное todo-gateway
приложение в экземпляре Azure Spring Apps. Так как это приложение является шлюзом, мы добавляем флаг --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.
- Выберите todo-gateway, чтобы получить дополнительные сведения о микрослужбе.
Скопируйте и вставьте предоставленный общедоступный URL-адрес. Сохраните этот URL-адрес, поскольку он будет использоваться в последующих разделах.
Существует тестовая конечная точка ( например, для микрослужб), но шлюз предоставляется непосредственно в Интернете, поэтому мы будем использовать общедоступный URL-адрес.
Так как шлюз подключен к реестру службы Spring Cloud, он должен автоматически открывать маршруты к доступным микрослужбам, с URL-путями в виде /MICROSERVICE-ID/**
: [ИДЕНТИФИКАТОР MICROSERVICE-ID должен находиться в прописных буквах]
Проверьте конечную точку todo-service
микрослужбы, заменив curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/
XXXXXXX на имя экземпляра Azure Spring Apps.
Как и в предыдущем модуле, результатом этой команды должны быть три элемента, которые изначально были вставлены в базу данных MySQL:
[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]