Criar um Spring Cloud Gateway

Concluído

Neste módulo, criaremos um Spring Cloud Gateway e o implantaremos nos Aplicativos Spring do Azure.

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

  • Eles manipulam a lógica de roteamento.
  • Eles protegem o acesso aos microsserviços, que não estarão disponíveis publicamente.
  • Eles também podem ter recursos de QoS (Qualidade de Serviço), como a limitação da taxa de HTTP.

Criar um Spring Cloud Gateway

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 -

Observação

Usamos Cloud Gateway, Eureka Discovery Client e os componentes Config Client.

Configurar o aplicativo

No arquivo 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 parte spring.main.allow-bean-definition-overriding=true é configurar o Spring Cloud Gateway para usar o bean do Spring Cloud Discovery Server configurado na biblioteca de clientes dos Aplicativos Spring do Azure.
  • A parte spring.cloud.gateway.discovery.locator.enabled=true é para configurar o Spring Cloud Gateway para usar o Registro do Serviço do Spring Cloud para descobrir os microsserviços disponíveis.

Criar o aplicativo nos Aplicativos Spring do Azure

Como no módulo anterior, crie um aplicativo todo-gateway específico na instância dos Aplicativos Spring do Azure. Como esse aplicativo é um gateway, adicionamos o sinalizador --assign-endpoint 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

Implantar o aplicativo

Agora você pode criar seu projeto de todo-gateway e enviá-lo para os Aplicativos Spring do Azure:

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 nuvem

  1. Acesse Aplicativos na instância dos Aplicativos Spring do Azure.

    1. Verifique se o todo-gateway tem um status de registro que diz 1/1. Essa informação mostra que ele foi registrado corretamente no Registro do Serviço do Spring Cloud.
    2. Selecione todo-gateway para obter mais informações sobre o microsserviço.
  2. Copie/cole a URL pública fornecida. Mantenha essa URL à mão para as seções subsequentes.

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

Como o gateway está conectado ao Registro de Serviço do Spring Cloud, 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 de microsserviço todo-service fazendo: curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/ (substituindo XXXXXXXXX pelo nome da instância dos Aplicativos Spring do Azure).

Como no módulo anterior, o resultado desse comando deve ser os três itens que foram inicialmente inseridos no banco de dados MySQL:

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