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.
- Si vous n’en avez pas, vous pouvez en créer un gratuitement.
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
Créez l’environnement Container Apps.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
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)
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
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
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é
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
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
deAFD 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
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
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