Partager via


Utiliser le routage basé sur des règles avec Azure Container Apps

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.

Conditions préalables

Programme d’installation

  1. Exécutez la commande suivante pour vous connecter à Azure à partir de l’interface CLI.

    az login
    
  2. Pour être sûr d’utiliser la dernière version de l’interface CLI, exécutez la commande upgrade.

    az upgrade
    

    Ignorez les éventuels avertissements concernant les modules actuellement utilisés.

  3. Maintenant que la version actuelle de l’extension ou du module est installée, inscrivez les espaces de noms Microsoft.App et Microsoft.OperationalInsights.

    az provider register --namespace Microsoft.App
    
    az 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

  1. 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.fqdn
    
  2. Exé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.fqdn
    
  3. Cré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-2
    

    Cette configuration définit deux règles de routage pour le trafic HTTP.

    Propriété Descriptif
    description Étiquette lisible par l’homme pour la règle
    routes.match.prefix Préfixe de chemin d’URL à mettre en correspondance. Par exemple : /api.
    routes.action.prefixRewrite Par quoi remplacer le préfixe correspondant avant le transfert.
    targets.containerApp Nom 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.path Définition du chemin d’accès pour correspondance exacte.
    route.match.pathSeparatedPrefix Correspond 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.caseSensitive Contrôle si les modèles de routage correspondent ou non à la sensibilité de la casse.
    target.label Route vers une révision étiquetée spécifique dans une application conteneur.
    target.revision Acheminer vers une révision spécifique au sein d’une application conteneur.
  4. 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.fqdn
    

    Le nom de domaine complet (FQDN) de votre configuration de routage HTTP ressemble à cet exemple : my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io

  1. Vérifiez que les deux applications conteneur existent déjà.

  2. 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.fqdn
    
  3. Déployez le fichier Bicep avec la commande suivante :

    az deployment group create `
      --name $ROUTE_CONFIG_NAME `
      --resource-group $RESOURCE_GROUP `
      --template-file routing.bicep
    
  4. Dans 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

  1. 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.

  2. 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