Criar um Gateway do Spring Cloud

Concluído

Neste módulo, criaremos um Spring Cloud Gateway e o implantaremos no Azure Spring Apps.

Os gateways são utilizados para encaminhar tráfego HTTP público para microsserviços:

  • São responsáveis pela lógica do itinerário.
  • Eles garantem o acesso aos microsserviços, que não estarão disponíveis publicamente.
  • Também podem ter capacidades Quality of Service (QoS), como a limitação de velocidade HTTP.

Criar um Gateway do Spring Cloud

Para criar nosso gateway, usamos https://start.spring.io com a linha de comando:

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 -

Nota

Usamos o Cloud Gateway, Eureka Discovery Cliente os Config Client componentes.

Configurar a aplicação

No ficheiro de configuração src/main/resources/application.properties, adicione a seguinte propriedade:

spring.main.allow-bean-definition-overriding=true
spring.cloud.gateway.discovery.locator.enabled=true
  • A spring.main.allow-bean-definition-overriding=true parte é configurar o Spring Cloud Gateway para usar o bean do Spring Cloud Discovery Server configurado na biblioteca do Cliente do Azure Spring Apps.
  • A parte spring.cloud.gateway.discovery.locator.enabled=true destina-se à configuração do Gateway do Spring Cloud para utilizar o Registo de Serviços do Spring Cloud para localizar os microsserviços disponíveis.

Criar o aplicativo no Azure Spring Apps

Como no módulo anterior, crie um aplicativo específico todo-gateway em sua instância do Azure Spring Apps. Como este aplicativo é um gateway, adicionamos o --assign-endpoint sinalizador para que ele seja exposto publicamente.

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

Implementar a aplicação

Agora você pode criar seu projeto todo-gateway e enviá-lo para o 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 ..

Testar o projeto na cloud

  1. Vá para Aplicativos em sua instância do Azure Spring Apps.

    1. Verifique se todo-gateway tem um status de registro que diz 1/1. Essas informações mostram que ele está registrado corretamente no Registro do Spring Cloud Service.
    2. Selecione todo-gateway para obter mais informações sobre o microsserviço.
  2. Copie/cole o URL público fornecido. Mantenha este URL pronto a utilizar para secções subsequentes.

    Há um ponto de extremidade de teste, como para microsserviços, mas o gateway está diretamente exposto na Internet, então usaremos a URL pública.

Como o gateway está conectado ao Spring Cloud Service Registry, ele deve abrir automaticamente rotas para os microsserviços disponíveis, com caminhos de URL na forma de /MICROSERVICE-ID/**: [O MICROSERVICE-ID deve estar em letras maiúsculas]

Teste o ponto de extremidade do todo-service microsserviço fazendo: curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/ (substituindo XXXXXXXX pelo nome da sua instância do Azure Spring Apps).

Tal como no módulo anterior, este comando deverá resultar nos três itens que foram inicialmente inseridos na base de dados MySQL:

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