Partager via


Utiliser un domaine personnalisé avec un routage basé sur des règles dans Azure Container Apps

Les configurations de routage HTTP prennent en charge les domaines personnalisés, ce qui vous permet d’acheminer le trafic de vos propres noms de domaine vers vos applications conteneur.

Conditions préalables

  • Un environnement Azure Container Apps existant
  • Un domaine personnalisé que vous possédez
  • Certificat SSL pour votre domaine (sauf si vous utilisez des certificats automatiques)
  • Applications conteneur déployées dans votre environnement

Configuration de domaine personnalisé

À l’aide du fournisseur DNS hébergeant votre domaine, créez les enregistrements DNS appropriés pour votre domaine personnalisé.

  • Si vous utilisez le domaine racine (par exemple, contoso.com), créez les enregistrements DNS suivants :

    Type d’enregistrement Hébergeur Valeur
    Un @ L’adresse IP de votre environnement Container Apps.
    TXT asuid Le code de vérification du domaine.
  • Si vous utilisez un sous-domaine (par exemple, www.contoso.com), créez les enregistrements DNS suivants :

    Type d’enregistrement Hébergeur Valeur
    Un Sous-domaine (par exemple, www) L’adresse IP de votre environnement Container Apps.
    TXT asuid.{subdomain} (par exemple, asuid.www) Le code de vérification du domaine.

Remarque

L’adresse IP de votre environnement Container Apps et le code de vérification du domaine se trouvent dans les paramètres de suffixe DNS personnalisés de votre environnement Container Apps.

Ne liez pas le domaine personnalisé à votre environnement Container Apps ou à une application conteneur. Les domaines ne sont liés qu’à une application, un itinéraire ou un environnement.

Configuration de la route

Mettez à jour votre fichier YAML Container Apps pour inclure une customDomains section. Incluez a bindingType et certificateId, en fonction des critères suivants :

valeur bindingType Descriptif
Handicapé Aucun certificat n’est fourni. Le domaine est disponible uniquement via HTTP et HTTPS n’est pas disponible.
Voiture Un certificat est facultatif. Si un certificat managé est déjà créé pour ce domaine, il est ajouté automatiquement à l’itinéraire. Sinon, le domaine est initialement disponible uniquement sur HTTP. Pour créer un certificat managé pour ce domaine, créez un certificat managé après la création de l’itinéraire. Une fois le certificat créé, il est automatiquement ajouté à l’itinéraire.
SniEnabled Un certificat est obligatoire.
Type de certificat format de certificateId
Aucun Laisser vide
Adresses IP gérées /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/managedCertificates/{CertificateFriendlyName}
Non géré /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/certificates/{CertificateFriendlyName}

Remarque

Pour ajouter un certificat à votre environnement, utilisez l’une des méthodes suivantes :

Ne liez pas le certificat à une application conteneur.

L’exemple suivant montre comment configurer la configuration de l’itinéraire.

customDomains:
  - name: "<CUSTOM_DOMAIN_ENDPOINT>" 
    certificateId: "<CERTIFICATE_ID>"
    bindingType: "SniEnabled" # Can also be "Disabled", "Auto"
rules:
  - description: "Routing to App1"
    routes:
      - match:
          prefix: "/1"
        action:
          prefixRewrite: "/"
    targets:
      - containerApp: "<APP1_CONTAINER_APP_NAME>"
  - description: "Routing to App2"
    routes:
      - match:
          prefix: "/2"
        action:
          prefixRewrite: "/"
      - match:
          prefix: "/"
    targets:
      - containerApp: "<APP2_CONTAINER_APP_NAME>"

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

Propriété Descriptif
customDomains.name Nom de domaine que vous souhaitez utiliser (exemple : « app.contoso.com »)
customDomains.certificateId ID de ressource de votre certificat (non nécessaire avec bindingType: "Auto")
customDomains.bindingType Gestion du protocole SSL : « SniEnabled » (Indication du nom du serveur), « Désactivé » (HTTP uniquement) ou « Auto » (certificat automatique)
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 personnalisé 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.

Travailler avec votre configuration de routage

Utilisez les commandes suivantes pour gérer votre configuration de routage.

Avant d’exécuter les commandes suivantes, veillez à remplacer les espaces réservés entourés de <> avec vos propres valeurs.

Créer une nouvelle configuration de routage

Utilisez az containerapp env http-route-config create pour créer une nouvelle configuration de routage.

az containerapp env http-route-config create \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME> \
    --yaml <CONTAINER_APPS_CONFIG_FILE>

Répertorier les configurations de routage

Permet az containerapp env http-route-config list de répertorier toutes les configurations de routage définies.

az containerapp env http-route-config list \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME>

Mettre à jour une configuration de routage

Permet az containerapp env http-route-config update de mettre à jour une configuration de routage existante.

az containerapp env http-route-config update \
  --resource-group <RESOURCE_GROUP_NAME> \
  --name <ENVIRONMENT_NAME> \
  --http-route-config-name <CONFIGURATION_NAME> \
  --yaml <CONTAINER_APPS_CONFIG_FILE>

Afficher une configuration d’itinéraire spécifique

Permet az containerapp env http-route-config show d’afficher les détails d’une configuration de routage.

az containerapp env http-route-config show \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

Supprimer une configuration de routage

Permet az containerapp env http-route-config delete de supprimer une configuration de routage.

az containerapp env http-route-config delete \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

Vérifier le routage HTTP

Après avoir configuré votre domaine personnalisé avec le routage basé sur des règles :

  1. Accédez à votre domaine personnalisé dans un navigateur. Par exemple : https://app.contoso.com/1.

  2. Vérifiez que la requête est acheminée vers la première application conteneur.

  3. Modifiez le chemin d’accès en /2. Par exemple : https://app.contoso.com/2.

  4. Vérifiez que la requête est maintenant routée vers la deuxième application conteneur.

Conseil / Astuce

Vous rencontrez des problèmes ? Faites-le nous savoir sur GitHub en ouvrant un problème dans le dépôt Azure Container Apps.