Creare un'istanza di Spring Cloud Gateway
In questo modulo si creerà un’istanza di Spring Cloud Gateway che verrà distribuita in Azure Spring Apps.
I gateway vengono usati per instradare il traffico HTTP pubblico ai microservizi:
- Gestiscono la logica di routing.
- Proteggono l'accesso ai microservizi, che non saranno disponibili pubblicamente.
- Possono anche avere funzionalità legate alla qualità del servizio (QoS), ad esempio la limitazione della frequenza HTTP.
Creare un'istanza di Spring Cloud Gateway
Per creare il gateway, si usa https://start.spring.io con la riga di 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
Vengono usati i componenti Cloud Gateway
, Eureka Discovery Client
e Config Client
.
Configurazione dell'applicazione
Nel file di configurazione src/main/resources/application.properties
aggiungere la proprietà seguente:
spring.main.allow-bean-definition-overriding=true
spring.cloud.gateway.discovery.locator.enabled=true
- La parte
spring.main.allow-bean-definition-overriding=true
consente di configurare Spring Cloud Gateway per l'uso del bean Spring Cloud Discovery Server configurato nella libreria Azure Spring Apps Client. - La parte
spring.cloud.gateway.discovery.locator.enabled=true
consente di configurare Spring Cloud Gateway per l'uso di Spring Cloud Service Registry al fine di individuare i microservizi disponibili.
Creare l'applicazione in Azure Spring Apps
Come nel modulo precedente, creare un'applicazione todo-gateway
specifica nell'istanza di Azure Spring Apps. Poiché questa applicazione è un gateway, viene aggiunto il flag --assign-endpoint
in modo da esporla pubblicamente.
az spring app create --name todo-gateway --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --runtime-version Java_17 --assign-endpoint
Distribuire l'applicazione
È ora possibile compilare il progetto todo-gateway e inviarlo ad 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 ..
Testare il progetto nel cloud
Passare ad App nell'istanza di Azure Spring Apps.
- Verificare che lo stato della registrazione di todo-gateway indichi 1/1. Queste informazioni indicano che la registrazione in Spring Cloud Service Registry è avvenuta correttamente.
- Selezionare todo-gateway per ottenere altre informazioni sul microservizio.
Copiare/incollare l'URL pubblico fornito. Tenere l'URL a portata di mano per le sezioni successive.
Esiste un endpoint di test, come per i microservizi, ma il gateway è esposto direttamente su Internet, quindi verrà usato l'URL pubblico.
Poiché il gateway è connesso a Spring Cloud Service Registry, verranno aperte automaticamente le route ai microservizi disponibili, con percorsi URL nel formato /MICROSERVICE-ID/**
, dove MICROSERVICE-ID deve essere in lettere maiuscole.
Testare l'endpoint del microservizio todo-service
eseguendo: curl https://XXXXXXXX-todo-gateway.azuremicroservices.io/TODO-SERVICE/
(sostituendo XXXXXXXX con il nome dell'istanza di Azure Spring Apps).
Come nel modulo precedente, il risultato di questo comando deve essere costituito dai tre elementi inseriti inizialmente nel database MySQL:
[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]