Создание шлюза 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 ..

Тестирование проекта в облаке

  1. Перейдите к приложениям в экземпляре Azure Spring Apps.

    1. Убедитесь, что todo-gateway имеет состояние регистрации, которое говорит 1/1. Эта информация указывает на правильную регистрацию в реестре службы Spring Cloud.
    2. Выберите todo-gateway, чтобы получить дополнительные сведения о микрослужбе.
  2. Скопируйте и вставьте предоставленный общедоступный 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}]