Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Les abonnements Basic, Standard et Enterprise sont entrés dans une période de retraite le 17 mars 2025. Pour plus d’informations, consultez l’annonce de la mise hors service d’Azure Spring Apps.
Cet article s’applique à : ❎ Essentiel/Standard ✅ Entreprise
Cet article vous montre comment migrer un projet Spring Cloud Gateway pour VMWare Tanzu exécuté sur le plan Azure Spring Apps Enterprise vers un projet Spring Cloud Gateway open source auto-hébergé s’exécutant en tant qu’application Azure Container Apps.
La version OSS de Spring Cloud Gateway mentionnée dans cette page est fournie à titre d’exemple. Vous pouvez choisir d’autres distributions de Spring Cloud Gateway en fonction de vos besoins.
Remarque
Les fonctionnalités offertes par Spring Cloud Gateway pour VMWare Tanzu sont plus étendues que celles de la version OSS. Assurez-vous d’examiner les différences et de vous assurer de la compatibilité avant de passer à la production.
Prérequis
- Une instance de plan Azure Spring Apps Enterprise avec Spring Cloud Gateway activé.
- Instance Azure Container Apps. Pour plus d’informations, consultez Démarrage rapide : Déployer votre première application de conteneur avec le portail Azure.
- Azure CLI
- Une instance Azure Container Registry disposant d’autorisations suffisantes pour générer et envoyer des images Docker. Pour plus d’informations, consultez Démarrage rapide : créer un registre de conteneurs privé à l’aide d’Azure CLI.
Préparation du code de l’application Spring Cloud Gateway auto-hébergée
Pour obtenir le code de l’application Spring Cloud Gateway, procédez comme suit :
- Accédez à https://start.spring.io.
- Mettez à jour les métadonnées du projet en définissant le champ Groupe sur le nom de votre organisation. Remplacez les champs Artefact et Name par gateway.
- Ajoutez les dépendances Reactive Gateway et Spring Boot Actuator.
- Laissez les autres propriétés à leurs valeurs par défaut.
- Sélectionnez Générer pour télécharger le projet.
- Une fois le projet téléchargé, extrayez-le.
Configurer l’application Spring Cloud Gateway
Maintenant que vous avez téléchargé l’application Spring Cloud Gateway, vous allez la configurer dans les sections suivantes.
Configurer le fichier de propriétés de l’application
Pour configurer le fichier de propriétés de l’application, procédez comme suit :
Accédez au répertoire gateway/src/main/resources du projet.
Renommez le fichier application.properties en application.yml.
Modifiez le fichier application.yml. Le fichier application.yml suivant est typique :
spring: application: name: gateway cloud: gateway: globalcors: corsConfigurations: '[/**]': allowedOriginPatterns: "*" allowedMethods: - GET - POST - PUT - DELETE allowedHeaders: - "*" allowCredentials: true maxAge: 3600 routes: - id: front uri: http://front-app predicates: - Path=/** - Method=GET order: 1000 filters: - StripPrefix=0 tags: - front
Configuration de CORS
Pour migrer la configuration CORS (Cross-Origin Resource Sharing) de votre projet Spring Cloud Gateway pour VMWare Tanzu, consultez Configuration CORS pour la configuration CORS globale et routez la configuration CORS.
Échelle
Lorsque vous migrez vers une application Spring Cloud Gateway dans Azure Container Apps, le comportement de mise à l’échelle doit s’aligner sur le modèle Azure Container Apps. Le nombre d’instances de Spring Cloud Gateway pour VMWare Tanzu est mappé à min-replica et max-replica dans Azure Container Apps. Vous pouvez configurer la mise à l’échelle automatique de l’application de passerelle en définissant des règles de mise à l’échelle. Pour plus d’informations, consultez Définir des règles de mise à l’échelle dans Azure Container Apps.
Les combinaisons de processeur et de mémoire disponibles dans Azure Spring Apps diffèrent de celles disponibles dans Azure Container Apps. Lors du mappage des allocations de ressources, assurez-vous que les configurations de processeur et de mémoire sélectionnées dans Azure Container Apps répondent à la fois à vos besoins en matière de performances et aux options prises en charge.
Domaines personnalisés et certificats
Azure Container Apps prend en charge les domaines et les certificats personnalisés. Pour plus d’informations sur la migration de domaines personnalisés configurés sur Spring Cloud Gateway pour VMWare Tanzu, consultez Certificats dans Azure Container Apps.
Itinéraires
Vous pouvez migrer les itinéraires dans Spring Cloud Gateway pour Tanzu vers Spring Cloud Gateway, comme le montre l’exemple application.yml. La liste suivante décrit la relation de mappage entre les itinéraires de Spring Cloud Gateway pour VMWare Tanzu et les itinéraires de Spring Cloud Gateway :
- La propriété
namede l’itinéraire est mappée surid. - Les propriétés
appNameetprotocolsont mappées à l’URI de l’itinéraire, qui doit être l’URI accessible pour l’instance Azure Container Apps. Assurez-vous que les applications Azure Container Apps activent l’entrée. - Les prédicats et les filtres de Spring Cloud Gateway pour VMWare Tanzu sont mappés aux prédicats et filtres de Spring Cloud Gateway. Les prédicats et filtres commerciaux ne sont pas pris en charge. Pour plus d’informations, consultez Filtres de routage commercial dans Spring Cloud Gateway pour K8s.
À titre d’exemple, considérons le fichier JSON de configuration d’itinéraire suivant, test-api.json, qui définit l’itinéraire test-api dans Spring Cloud Gateway pour VMWare Tanzu pour l’application test :
{
"protocol": "HTTP",
"routes": [
{
"title": "Test API",
"predicates": [
"Path=/test/api/healthcheck",
"Method=GET"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
}
Ensuite, le fichier YAML suivant affiche la configuration d’itinéraire correspondante pour l’application Spring Cloud Gateway :
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/test/api/healthcheck
- Method=GET
filters:
- AddRequestHeader=X-Request-red, blue
- StripPrefix=1
Spring Cloud Gateway pour VMWare Tanzu définit StripPrefix=1 par défaut sur chaque itinéraire. Pour migrer vers Spring Cloud Gateway, vous devez définir explicitement StripPrefix=1 dans la configuration du filtre.
Pour permettre à votre application Spring Cloud Gateway d’accéder à d’autres applications via le nom de l’application, vous devez activer l’entrée pour vos applications Azure Container App. Vous pouvez également définir le nom de domaine complet (FQDN) accessible de l’application Azure Container Apps comme URI de l’itinéraire, en suivant le format https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.
Remarque
Certains prédicats et filtres commerciaux ne sont pas pris en charge sur Spring Cloud Gateway.
Cache de réponse
Si vous activez le cache de réponse globalement dans Spring Cloud Gateway pour VMWare Tanzu, utilisez la configuration suivante dans Spring Cloud Gateway. Pour plus d’informations, consultez Filtre de cache de réponse locale.
spring:
cloud:
gateway:
filter:
local-response-cache:
enabled: true
time-to-live: <response-cache-ttl>
size: <response-cache-size>
Si vous activez le cache de réponse pour l’itinéraire, vous pouvez utiliser le filtre LocalResponseCache dans la configuration de la règle de routage de la passerelle gérée pour Spring à l’aide de l’exemple suivant :
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/resource
filters:
- LocalResponseCache=30m,500MB
Intégrer avec APM
Vous pouvez activer la surveillance des performances des applications (APM) pour votre application Spring Cloud Gateway. Pour plus d’informations, consultez Intégrer l’analyse des performances des applications dans des images conteneur.
Déployer sur Azure Container Apps
Une fois que la configuration de Spring Cloud Gateway est prête, créez l’image à l’aide d’Azure Container Registry et déployez-la sur Azure Container Apps.
Générer et envoyer l’image Docker
Pour générer et envoyer l’image Docker, procédez comme suit :
Dans le répertoire du projet Spring Cloud Gateway, créez un fichier Dockerfile avec le contenu suivant :
Remarque
Vous pouvez également utiliser l’exemple de fichier Dockerfile ACME Fitness Store.
FROM mcr.microsoft.com/openjdk/jdk:17-mariner as build WORKDIR /staging # Install gradle RUN tdnf install -y wget unzip RUN wget https://services.gradle.org/distributions/gradle-8.8-bin.zip && \ unzip -d /opt/gradle gradle-8.8-bin.zip && \ chmod +x /opt/gradle/gradle-8.8/bin/gradle ENV GRADLE_HOME=/opt/gradle/gradle-8.8 ENV PATH=$PATH:$GRADLE_HOME/bin COPY . . # Compile with gradle RUN gradle build -x test FROM mcr.microsoft.com/openjdk/jdk:17-mariner as runtime WORKDIR /app COPY --from=build /staging/build/libs/gateway-0.0.1-SNAPSHOT.jar . ENTRYPOINT ["java", "-jar", "gateway-0.0.1-SNAPSHOT.jar"]Utilisez les commandes suivantes pour générer l’image de la passerelle :
az acr login --name <azure-container-registry-name> az acr build \ --resource-group <resource-group-name> \ --image gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT \ --registry <azure-container-registry-name> \ --file Dockerfile .Assurez-vous que l’image de passerelle est générée et obtenez la balise image, qui utilise le format suivant :
<azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT.
Déployer l’image dans Azure Container Apps
Une fois que l’image de votre application de passerelle est prête, déployez-la en tant qu’application Azure Container Apps à l’aide de la commande suivante. Remplacez l’espace réservé <container-image-of-gateway> par la balise d’image récupérée à l’étape précédente.
az containerapp up \
--resource-group <resource-group-name> \
--name gateway \
--environment <azure-container-app-environment-name> \
--image <container-image-of-gateway> \
--target-port 8080 \
--ingress external
Accédez au nom de domaine complet de l’application Spring Cloud Gateway pour vérifier qu’elle est en cours d’exécution.
Dépannage
Si vous rencontrez des problèmes lors de l’exécution de l’application Spring Cloud Gateway, vous pouvez afficher les journaux en temps réel et d’historique de l’application gateway dans Azure Container Apps. Pour plus d’informations, consultez Journalisation des applications dans Azure Container Apps.
Vous pouvez également surveiller les métriques d’une application de passerelle. Pour plus d’informations, consultez Surveiller les métriques Azure Container Apps.
Limitation connue
OSS Spring Cloud Gateway ne prend pas en charge nativement les fonctionnalités commerciales suivantes :
- Métadonnées utilisées pour générer la documentation OpenAPI.
- Fonctionnalité d’authentification unique (SSO).
Si vous avez besoin de ces fonctionnalités, vous devrez peut-être envisager d’autres solutions commerciales, telles que Spring Cloud Gateway pour VMWare Tanzu.