Criar um Gateway do Spring Cloud
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 Client
e 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
Vá para Aplicativos em sua instância do Azure Spring Apps.
- 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.
- Selecione todo-gateway para obter mais informações sobre o microsserviço.
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}]