Partager via


Créer une liaison privée à une application conteneur Azure avec Azure Front Door (préversion)

Dans cet article, vous allez apprendre à vous connecter directement à partir d’Azure Front Door à vos applications conteneur Azure à l’aide d’une liaison privée au lieu de l’Internet public. Dans ce tutoriel, vous allez créer un environnement de profils de charge de travail Azure Container Apps et une instance Azure Front Door, puis les connecter de manière sécurisée via une liaison privée. Vous vérifierez ensuite la connectivité entre votre application conteneur et l’instance Azure Front Door.

Prérequis

  • Compte Azure avec un abonnement actif.

  • Cette fonctionnalité est uniquement disponible avec l’interface Azure CLI. Pour vérifier que vous exécutez la dernière version d’Azure CLI, exécutez la commande suivante.

    az upgrade
    
  • La dernière version de l’extension Azure Container Apps pour Azure CLI. Pour vérifier que vous exécutez la dernière version, exécutez la commande suivante.

    az extension add --name containerapp --upgrade --allow-preview true
    

    Remarque

    À compter de mai 2024, les extensions Azure CLI n’activent plus les fonctionnalités en préversion par défaut. Pour accéder aux fonctionnalités en préversion de Container Apps, installez l’extension Container Apps avec --allow-preview true.

  • Cette fonctionnalité est uniquement prise en charge pour les environnements de profils de charge de travail.

Pour plus d’informations sur les prérequis et la configuration, consultez Démarrage rapide : Déployer votre première application conteneur avec containerapp up.

Définir des variables d’environnement

Définissez les variables d’environnement suivantes.

RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
AFD_PROFILE="my-afd-profile"
AFD_ENDPOINT="my-afd-endpoint"
AFD_ORIGIN_GROUP="my-afd-origin-group"
AFD_ORIGIN="my-afd-origin"
AFD_ROUTE="my-afd-route"

Création d’un groupe de ressources Azure

Créez un groupe de ressources pour organiser les services liés au déploiement de votre application de conteneur.

az group create \
    --name $RESOURCE_GROUP \
    --location $LOCATION

Créer un environnement

  1. Créez l’environnement Container Apps.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Récupérez l’ID d’environnement. Vous en avez besoin pour configurer l’environnement.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Désactivez l’accès au réseau public pour l’environnement.

    az containerapp env update \
        --id $ENVIRONMENT_ID \
        --public-network-access Disabled
    

Déployer une application conteneur

  1. Exécutez la commande suivante pour déployer une application conteneur dans votre environnement.

    az containerapp up \
        --name $CONTAINERAPP_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --environment $ENVIRONMENT_NAME \
        --image mcr.microsoft.com/k8se/quickstart:latest \
        --target-port 80 \
        --ingress external \
        --query properties.configuration.ingress.fqdn
    
  2. Récupérez le point de terminaison de votre application conteneur.

    ACA_ENDPOINT=$(az containerapp show \
        --name $CONTAINERAPP_NAME \
        --resource-group $RESOURCE_GROUP \
        --query properties.configuration.ingress.fqdn \
        --output tsv)
    

    Si vous accédez au point de terminaison de l’application conteneur, vous recevez ERR_CONNECTION_CLOSED, car l’accès public est désactivé pour l’environnement de l’application conteneur. Au lieu de cela, utilisez un point de terminaison AFD pour accéder à votre application conteneur.

Créer un profil Azure Front Door

Créez un profil AFD. La liaison privée n’est pas prise en charge pour les origines dans un profil AFD avec la référence SKU Standard_AzureFrontDoor.

az afd profile create \
    --profile-name $AFD_PROFILE \
    --resource-group $RESOURCE_GROUP \
    --sku Premium_AzureFrontDoor

Créer un point de terminaison Azure Front Door

Ajoutez un point de terminaison à votre profil AFD.

az afd endpoint create \
    --resource-group $RESOURCE_GROUP \
    --endpoint-name $AFD_ENDPOINT \
    --profile-name $AFD_PROFILE \
    --enabled-state Enabled

Créer un groupe d’origine Azure Front Door

Créez un groupe d’origines AFD.

az afd origin-group create \
    --resource-group $RESOURCE_GROUP \
    --origin-group-name $AFD_ORIGIN_GROUP \
    --profile-name $AFD_PROFILE \
    --probe-request-type GET \
    --probe-protocol Http \
    --probe-interval-in-seconds 60 \
    --probe-path / \
    --sample-size 4 \
    --successful-samples-required 3 \
    --additional-latency-in-milliseconds 50

Créer une origine Azure Front Door

Ajoutez une origine AFD à votre groupe d’origines.

az afd origin create \
    --resource-group $RESOURCE_GROUP \
    --origin-group-name $AFD_ORIGIN_GROUP \
    --origin-name $AFD_ORIGIN \
    --profile-name $AFD_PROFILE \
    --host-name $ACA_ENDPOINT \
    --origin-host-header $ACA_ENDPOINT \
    --priority 1 \
    --weight 500 \
    --enable-private-link true \
    --private-link-location $LOCATION \
    --private-link-request-message "AFD Private Link Request" \
    --private-link-resource $ENVIRONMENT_ID \
    --private-link-sub-resource-type managedEnvironments

Répertorier les connexions au point de terminaison privé

  1. Exécutez la commande suivante pour lister les connexions de point de terminaison privé pour votre environnement.

    az network private-endpoint-connection list \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --type Microsoft.App/managedEnvironments
    
  2. Enregistrez l’ID de ressource de la connexion du point de terminaison privé à partir de la réponse. La connexion de point de terminaison privé a une valeur properties.privateLinkServiceConnectionState.description de AFD Private Link Request. L’ID de ressource de la connexion du point de terminaison privé ressemble à ce qui suit.

    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.App/managedEnvironments/my-environment/privateEndpointConnections/<PRIVATE_ENDPOINT_CONNECTION_ID>
    

    Ne confondez pas cela avec l’ID de point de terminaison privé, qui ressemble à ce qui suit.

    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/eafd-Prod-centralus/providers/Microsoft.Network/privateEndpoints/<PRIVATE_ENDPOINT_ID>
    

Approuver la connexion Private Endpoint

Exécutez la commande suivante pour approuver la connexion. Remplacez <PLACEHOLDER> par l’ID de ressource de la connexion du point de terminaison privé que vous avez enregistré dans la section précédente.

az network private-endpoint-connection approve --id <PRIVATE_ENDPOINT_CONNECTION_RESOURCE_ID>

Ajouter un itinéraire

Exécutez la commande suivante pour mapper le point de terminaison que vous avez créé précédemment au groupe d’origine. Les points de terminaison privés sur Azure Container Apps prennent uniquement en charge le trafic HTTP entrant. Le trafic TCP n’est pas pris en charge.

az afd route create \
    --resource-group $RESOURCE_GROUP \
    --profile-name $AFD_PROFILE \
    --endpoint-name $AFD_ENDPOINT \
    --forwarding-protocol MatchRequest \
    --route-name $AFD_ROUTE \
    --https-redirect Enabled \
    --origin-group $AFD_ORIGIN_GROUP \
    --supported-protocols Http Https \
    --link-to-default-domain Enabled

Accéder à votre application conteneur à partir d’Azure Front Door

  1. Récupérez le nom d’hôte de votre point de terminaison AFD.

    az afd endpoint show \
        --resource-group $RESOURCE_GROUP \
        --profile-name $AFD_PROFILE \
        --endpoint-name $AFD_ENDPOINT \
        --query hostName \
        --output tsv
    

    Votre nom d’hôte ressemble à l’exemple suivant.

    my-afd-endpoint.<HASH>.b01.azurefd.net
    
  2. Accédez au nom d’hôte. Vous voyez la sortie de l’image de l’application conteneur du guide de démarrage rapide.

    Le déploiement global de votre profil AFD prend quelques minutes. Par conséquent, si vous ne voyez pas la sortie attendue, patientez quelques minutes, puis actualisez.

Nettoyer les ressources

Si vous ne souhaitez pas continuer à utiliser cette application, vous pouvez supprimer le groupe de ressources my-container-apps. Cela supprime l’instance Azure Container Apps et tous les services associés. Cela supprime également le groupe de ressources que le service Container Apps a créé automatiquement et qui contient les composants réseau personnalisés.

Attention

La commande suivante supprime le groupe de ressources spécifié et toutes les ressources qu’il contient. Si des ressources en dehors du cadre de ce guide existent dans le groupe de ressources spécifié, elles sont également supprimées.

az group delete --name $RESOURCE_GROUP