Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous allez apprendre à utiliser le routage basé sur des règles avec Azure Container Apps. Avec le routage basé sur des règles, vous créez un nom de domaine complet (FQDN) sur votre environnement d’applications conteneur. Vous utilisez ensuite des règles pour router les demandes de ce nom de domaine complet vers différentes applications conteneur, en fonction du chemin d’accès de chaque requête.
Modèle de routage et d’autorisation
Les configurations de routage HTTP (httpRouteConfigs) fonctionnent au niveau de l’environnement Container Apps. Une route peut cibler n’importe quelle application conteneur dans le même environnement, quel que soit le réglage d’entrée individuel de l’application cible. Puisque le FQDN de la route est publié sous le domaine de l’environnement, une route peut fournir un point d’entrée public qui transmet les requêtes vers une application conteneur utilisant l’entrée interne (external: false). Ce comportement permet la composition de plusieurs applications sous un même hôte.
Les autorisations pour les configurations de routes HTTP sont orientées vers l’environnement géré plutôt que vers des applications conteneurs individuelles. Créer, mettre à jour ou supprimer une route nécessite l’autorisation Microsoft.App/managedEnvironments/httpRouteConfigs/write sur l’environnement. Aucune autorisation supplémentaire n’est requise sur l’application conteneur cible. Ce comportement est cohérent avec l’environnement qui est une frontière de confiance partagée, où toutes les applications conteneurs d’un environnement appartiennent au même client. Tout principal ayant un rôle à portée d’environnement incluant httpRouteConfigs/write des permissions, comme Contributeur sur l’environnement, peut créer des routes ciblant n’importe quelle application conteneur dans cet environnement.
Important
Une configuration de route HTTP peut exposer une application conteneur qui utilise une entrée interne (external: false) si vous configurez l’application comme cible de route. Ce external: false réglage contrôle la visibilité du propre FQDN de l’application. En utilisant cette configuration, l’environnement n’empêche pas l’application de recevoir le trafic via une route au niveau de l’environnement. Pour garder une application conteneur inaccessible depuis l’extérieur de l’environnement, ne la référencez pas comme cible dans aucune configuration de route HTTP. À la place, placez l’application dans un environnement séparé sans itinéraires publics, ou utilisez des contrôles au niveau du réseau pour restreindre le trafic entrant.
Conditions préalables
Compte Azure avec un abonnement actif.
- Si vous n’en avez pas, vous pouvez en créer un gratuitement.
Installez Azure CLI.
Programme d’installation
Exécutez la commande suivante pour vous connecter à Azure à partir de l’interface CLI.
az loginPour être sûr d’utiliser la dernière version de l’interface CLI, exécutez la commande upgrade.
az upgradeIgnorez les éventuels avertissements concernant les modules actuellement utilisés.
Maintenant que la version actuelle de l’extension ou du module est installée, inscrivez les espaces de noms
Microsoft.AppetMicrosoft.OperationalInsights.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
Créer des variables d’environnement
Créez les variables d’environnement suivantes.
CONTAINER_APP_1_NAME="my-container-app-1"
CONTAINER_APP_1_IMAGE="mcr.microsoft.com/k8se/quickstart:latest"
CONTAINER_APP_1_TARGET_PORT="80"
CONTAINER_APP_2_NAME="my-container-app-2"
CONTAINER_APP_2_IMAGE="mcr.microsoft.com/dotnet/samples:aspnetapp"
CONTAINER_APP_2_TARGET_PORT="8080"
LOCATION="eastus"
RESOURCE_GROUP="my-container-apps"
ENVIRONMENT_NAME="my-container-apps-env"
ROUTE_CONFIG_NAME="my-route-config"
Créer des applications conteneur
Exécutez la commande suivante pour créer votre première application conteneur. Cette application conteneur utilise l’image de démarrage rapide Container Apps.
az containerapp up \ --name $CONTAINER_APP_1_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_APP_1_IMAGE \ --target-port $CONTAINER_APP_1_TARGET_PORT \ --ingress external \ --query properties.configuration.ingress.fqdnExécutez la commande suivante pour créer votre deuxième application conteneur. Cette application conteneur utilise l’image de démarrage rapide ASP.NET.
az containerapp up \ --name $CONTAINER_APP_2_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_APP_2_IMAGE \ --target-port $CONTAINER_APP_2_TARGET_PORT \ --ingress external \ --query properties.configuration.ingress.fqdnCréez la configuration de l’itinéraire HTTP.
Créez le fichier suivant et enregistrez-le sous
routing.yml.rules: - description: App 1 rule routes: - match: prefix: /app1 action: prefixRewrite: / targets: - containerApp: my-container-app-1 - description: App 2 rule routes: - match: path: /app2 action: prefixRewrite: / - match: path: / targets: - containerApp: my-container-app-2Cette configuration définit deux règles de routage pour le trafic HTTP.
Note
L’ordre des règles de routage est important.
Les préfixes plus spécifiques doivent être avant des préfixes moins spécifiques.
Par exemple, si la première règle correspond au préfixe /api, qui sera utilisée même si la deuxième règle utilise le préfixe /api/v1.
Propriété Descriptif descriptionÉtiquette lisible par l’homme pour la règle routes.match.prefixPréfixe de chemin d’URL à mettre en correspondance. Par exemple : /api.routes.action.prefixRewritePar quoi remplacer le préfixe correspondant avant le transfert. targets.containerAppNom de l’application conteneur dans laquelle la demande de routage correspondante est envoyée. Ces règles permettent à différents chemins d’accès sur votre domaine d’acheminer vers différentes applications conteneur tout en modifiant le chemin de la requête avant qu’il n’atteigne l’application de destination.
Les autres propriétés non répertoriées qui peuvent affecter vos itinéraires incluent les éléments suivants.
Propriété Descriptif route.match.pathDéfinition du chemin d’accès pour correspondance exacte. route.match.pathSeparatedPrefixCorrespond aux itinéraires sur les limites « / » plutôt que sur n’importe quel texte. Par exemple, si vous définissez la valeur sur /product, elle correspondra à/product/1, mais pas à/product1.route.match.caseSensitiveContrôle si les modèles de routage correspondent ou non à la sensibilité de la casse. target.labelRoute vers une révision étiquetée spécifique dans une application conteneur. target.revisionAcheminer vers une révision spécifique au sein d’une application conteneur. Exécutez la commande suivante pour créer la configuration de l’itinéraire HTTP.
az containerapp env http-route-config create \ --http-route-config-name $ROUTE_CONFIG_NAME \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --yaml routing.yml \ --query properties.fqdnLe nom de domaine complet (FQDN) de votre configuration de routage HTTP ressemble à cet exemple :
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Vérifiez que les deux applications conteneur existent déjà.
Créez le fichier Bicep suivant et enregistrez-le sous
routing.bicep.resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2024-10-02-preview' = { name: 'my-container-apps-env' location: 'eastus' tags: {} properties: { workloadProfiles: [ { workloadProfileType: 'Consumption' name: 'Consumption' } ] } } resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@2024-10-02-preview' = { parent: containerAppsEnvironment name: 'my-route-config' location: 'eastus' properties: { rules: [ { description: 'App 1 rule' routes: [ { match: { prefix: '/app1' } action: { prefixRewrite: '/' } } ] targets: [ { containerApp: 'my-container-app-1' } ] } { description: 'App 2 rule' routes: [ { match: { path: '/app2' } action: { prefixRewrite: '/' } } { match: { path: '/' } } ] targets: [ { containerApp: 'my-container-app-2' } ] } ] } } output fqdn string = httpRouteConfig.properties.fqdnDéployez le fichier Bicep avec la commande suivante :
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepDans la sortie, recherchez
outputs, qui contient le nom de domaine complet (FQDN) de votre configuration de routage HTTP. Par exemple:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
Vérifier la configuration de l’itinéraire HTTP
Accédez à votre nom de domaine complet de configuration de routage HTTP avec le chemin d’accès
/app1.Par exemple :
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.Vous voyez l’image de démarrage rapide Container Apps.
Accédez à votre nom de domaine complet de configuration de routage HTTP avec le chemin d’accès
/app2.Par exemple :
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.Vous voyez l’image de démarrage rapide ASP.NET.
Nettoyer les ressources
Si vous ne souhaitez pas continuer à utiliser cette application, exécutez la commande suivante pour supprimer le groupe de ressources ainsi que toutes les ressources créées pendant ce démarrage rapide.
Avertissement
La commande suivante supprime le groupe de ressources spécifié et toutes les ressources qu’il contient. Si des ressources en dehors de l’étendue de ce guide de démarrage rapide existent dans le groupe de ressources spécifié, elles seront également supprimées.
az group delete --name my-container-apps