Utiliser un point de terminaison privé avec un environnement Azure Container Apps (préversion)
Dans cet article, vous apprenez à utiliser un point de terminaison privé pour accéder en toute sécurité à votre application conteneur Azure sans l’exposer à l’Internet public.
Le point de terminaison privé utilise une adresse IP privée de votre réseau virtuel. Ce point de terminaison privé vous connecte de façon privée et sécurisée à un service basé sur Azure Private Link.
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.
Prérequis
- Compte Azure avec un abonnement actif.
- Si vous n’en avez pas, vous pouvez en créer un gratuitement.
Créer une application de conteneur
Commencez par vous connecter au portail Azure.
Dans la barre de recherche supérieure, recherchez Applications conteneur.
Dans les résultats de la recherche, sélectionnez Applications conteneur.
Cliquez sur le bouton Créer.
Sur la page Créer une application conteneur, sous l’onglet Informations de base, entrez les valeurs suivantes :
Setting Action Abonnement Sélectionnez votre abonnement Azure. Resource group Sélectionnez Créer et entrez my-container-apps. Nom de l’application conteneur Entrez my-container-app. Source de déploiement Sélectionnez Image conteneur. Région Sélectionnez USA Centre. Dans le champ Créer un environnement Container Apps, sélectionnez Créer.
Dans l’onglet Informations de base de la page Créer un environnement Container Apps, entrez les valeurs suivantes :
Paramètre Valeur Nom de l’environnement Entrez my-environment. Redondance de zone Sélectionnez Désactivé Sélectionnez l’onglet Mise en réseau pour créer un réseau virtuel. Par défaut, l’accès au réseau public est activé, ce qui signifie que les points de terminaison privés sont désactivés.
Désactivez l’accès au réseau public.
Laissez Utiliser votre propre réseau virtuel défini sur Non. Vous pouvez utiliser un réseau virtuel existant, mais les points de terminaison privés ne sont pris en charge que par les environnements de profils de charge de travail, qui nécessitent un sous-réseau avec une plage CIDR minimale de
/27
ou plus. Pour en savoir plus sur le dimensionnement du sous-réseau, consultez la vue d’ensemble de l’architecture réseau .Définissez Activer les points de terminaison privés sur Oui.
Définissez Nom du point de terminaison privé sur my-private-endpoint.
Dans le champ Réseau virtuel de point de terminaison privé, sélectionnez Créer.
Sur la page Créer un réseau virtuel, définissez Réseau virtuel sur my-private-endpoint-vnet. Cliquez sur OK.
Dans le champ Sous-réseau du réseau virtuel de point de terminaison privé, sélectionnez Créer.
Sur la page Créer un sous-réseau, définissez Nom du sous-réseau sur my-private-endpoint-vnet-subnet. Cliquez sur OK.
Laissez DNS défini sur Zone DNS privée Azure.
Sélectionnez Créer.
Sur la page Créer une application conteneur, sous l’onglet Informations de base, sélectionnez Suivant : Conteneur >.
Sur la page Créer une application conteneur, sous l’onglet Conteneur, sélectionnez Utiliser l’image de démarrage rapide.
Au bas de la page, sélectionnez Vérifier et créer.
Si aucune erreur n’est rencontrée, le bouton Créer est activé.
En cas d’erreur, tout onglet contenant des erreurs est marqué d’un point rouge. Accédez à l’onglet approprié. Les champs contenant une erreur sont en rouge. Une fois toutes les erreurs résolues, resélectionnez Vérifier et créer.
Sélectionnez Create (Créer).
Une page contenant le message Le déploiement est en cours s’affiche. Une fois le déploiement terminé, vous voyez le message Votre déploiement est terminé.
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 votre environnement d’application conteneur. Au lieu de cela, vous accédez à votre application conteneur à l’aide de votre point de terminaison privé.
Prérequis
Compte Azure avec un abonnement actif.
- Si vous n’en avez pas, vous pouvez en créer un gratuitement.
La version la plus récente d’Azure CLI. Pour vérifier que vous exécutez la dernière version, 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
.
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"
VNET_NAME="my-custom-vnet"
SUBNET_NAME="my-custom-subnet"
PRIVATE_ENDPOINT="my-private-endpoint"
PRIVATE_ENDPOINT_CONNECTION="my-private-endpoint-connection"
PRIVATE_DNS_ZONE="privatelink.${LOCATION}.azurecontainerapps.io"
DNS_LINK="my-dns-link"
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éez un réseau virtuel
Un environnement dans Azure Container Apps crée une limite sécurisée autour d’un groupe d’applications de conteneur. Les applications de conteneur déployées dans le même environnement sont déployées dans le même réseau virtuel et écrivent les journaux dans le même espace de travail Log Analytics.
Créez un réseau virtuel Azure à associer à l’environnement Container Apps. Le réseau virtuel doit disposer d’un sous-réseau disponible pour le déploiement de l’environnement. Vous pouvez utiliser un réseau virtuel existant, mais les points de terminaison privés ne sont pris en charge que par les environnements de profils de charge de travail, qui nécessitent un sous-réseau avec une plage CIDR minimale de
/27
ou plus. Pour en savoir plus sur le dimensionnement du sous-réseau, consultez la vue d’ensemble de l’architecture réseau .az network vnet create \ --resource-group $RESOURCE_GROUP \ --name $VNET_NAME \ --location $LOCATION \ --address-prefix 10.0.0.0/16
Créez un sous-réseau à associer au réseau virtuel, pour contenir le point de terminaison privé.
az network vnet subnet create \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --address-prefixes 10.0.0.0/21
Récupérez l’ID de sous-réseau. Vous l’utilisez pour créer le point de terminaison privé.
SUBNET_ID=$(az network vnet subnet show \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --query "id" \ --output tsv)
Créer un environnement
Créez l’environnement Container Apps à l’aide du réseau virtuel déployé lors les étapes précédentes. Les points de terminaison privés ne sont pris en charge que par les environnements de profils de charge de travail, qui est le type par défaut pour les nouveaux environnements.
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. Cela est nécessaire pour activer les points de terminaison privés.
az containerapp env update \ --id $ENVIRONMENT_ID \ --public-network-access Disabled
Créer un Private Endpoint
Créez le point de terminaison privé dans l’environnement et le sous-réseau que vous avez créés précédemment.
az network private-endpoint create \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--name $PRIVATE_ENDPOINT \
--subnet $SUBNET_ID \
--private-connection-resource-id $ENVIRONMENT_ID \
--connection-name $PRIVATE_ENDPOINT_CONNECTION \
--group-id managedEnvironments
Configurer la zone DNS privée
Récupérez l’adresse IP du point de terminaison privé. Vous l’utilisez pour ajouter un enregistrement DNS à votre zone DNS privée.
PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \ --name $PRIVATE_ENDPOINT \ --resource-group $RESOURCE_GROUP \ --query 'customDnsConfigs[0].ipAddresses[0]' \ --output tsv)
Récupérez le domaine par défaut de l’environnement. Vous l’utilisez pour ajouter un enregistrement DNS à votre zone DNS privée.
DNS_RECORD_NAME=$(az containerapp env show \ --id $ENVIRONMENT_ID \ --query 'properties.defaultDomain' \ --output tsv | sed 's/\..*//')
Créez une zone DNS privée.
az network private-dns zone create \ --resource-group $RESOURCE_GROUP \ --name $PRIVATE_DNS_ZONE
Créez un lien entre votre réseau virtuel et votre zone DNS privée.
az network private-dns link vnet create \ --resource-group $RESOURCE_GROUP \ --zone-name $PRIVATE_DNS_ZONE \ --name $DNS_LINK \ --virtual-network $VNET_NAME \ --registration-enabled false
Ajoutez un enregistrement pour votre point de terminaison privé vers votre zone DNS privée.
az network private-dns record-set a add-record \ --resource-group $RESOURCE_GROUP \ --zone-name $PRIVATE_DNS_ZONE \ --record-set-name $DNS_RECORD_NAME \ --ipv4-address $PRIVATE_ENDPOINT_IP_ADDRESS
Déployer une application conteneur
Déployez une application conteneur dans votre environnement. Cette application conteneur utilise simplement l’image de démarrage rapide.
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 votre environnement d’application conteneur. Au lieu de cela, vous accédez à votre application conteneur à l’aide de votre point de terminaison privé.
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
Vérifier la connexion au point de terminaison privé
Dans cette section, vous créez une machine virtuelle associée à votre réseau virtuel afin de pouvoir accéder à l’application conteneur que vous avez définie à l’aide de votre point de terminaison privé.
Créer une machine virtuelle
Commencez par vous connecter au portail Azure.
Recherchez des machines virtuelles dans la barre de recherche supérieure.
Sélectionnez Machines virtuelles dans les résultats de la recherche.
Sélectionnez Créer.
Sur la page Créer une machine virtuelle, sous l’onglet Informations de base, entrez les valeurs suivantes.
Setting Action Abonnement Sélectionnez votre abonnement Azure. Resource group Sélectionnez my-container-apps. Nom de la machine virtuelle Entrez azurevm. Région Sélectionnez USA Centre. Options de disponibilité Sélectionnez Aucune redondance d’infrastructure requise. Type de sécurité Sélectionnez Standard. Image Sélectionnez Centre de données Windows Server 2022 : Édition Azure x64 Gen2. Nom d’utilisateur entrez azureuser. Mot de passe Entrez un mot de passe. Confirmer le mot de passe Entrez de nouveau le mot de passe. Aucun port d’entrée public Sélectionnez Aucun. Dans le volet Mise en réseau, entrez les valeurs suivantes.
Setting Action Réseau virtuel Sélectionnez my-private-endpoint-vnet. Sous-réseau Sélectionnez my-private-endpoint-vnet-subnet (10.0.0.0/23). Adresse IP publique Sélectionnez Aucun. Groupe de sécurité réseau de la carte réseau Sélectionnez Avancé. Sélectionnez Vérifier + créer.
Sélectionnez Créer.
Définir des variables d’environnement
Définissez les variables d’environnement suivantes.
VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"
Créer une machine virtuelle
Exécutez la commande suivante :
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Win2022Datacenter \
--public-ip-address "" \
--vnet-name $VNET_NAME \
--subnet $SUBNET_NAME \
--admin-username $VM_ADMIN_USERNAME
Après avoir exécuté cette commande, vous êtes invité à entrer un mot de passe d’administrateur pour votre machine virtuelle.
Le nom d’utilisateur de l’administrateur doit comporter entre 1 et 20 caractères.
Le mot de passe de l’administrateur doit répondre aux exigences suivantes :
- Il doit comprendre entre 12 et 123 caractères.
- Il doit avoir 3 des éléments suivants : 1 caractère minuscule, 1 caractère majuscule, 1 nombre et 1 caractère spécial.
Tester la connexion
Commencez par vous connecter au portail Azure.
Recherchez la machine virtuelle que vous avez créée dans la barre de recherche supérieure et sélectionnez-la dans les résultats de la recherche.
Sur la page Vue d’ensemble de la machine virtuelle, sélectionnez Se connecter, puis Se connecter via Bastion.
Sur la page Bastion, sélectionnez Déployer Bastion.
Définissez Nom d’utilisateur et Mot de passe de machine virtuelle sur le nom d’utilisateur et le mot de passe que vous avez utilisés lors de la création de la machine virtuelle.
Sélectionnez Connecter.
Après vous être connecté, exécutez PowerShell dans la machine virtuelle.
Dans PowerShell, exécutez la commande suivante. Remplacez les <ESPACES RÉSERVÉS> par vos valeurs.
nslookup <CONTAINER_APP_ENDPOINT>
La sortie est similaire à l’exemple suivant, avec vos valeurs à la place des <espaces réservés>.
Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: <ENVIRONMENT_DEFAULT_DOMAIN>.privatelink.<LOCATION>.azurecontainerapps.io Address: 10.0.0.4 Aliases: <CONTAINER_APP_ENDPOINT>
Ouvrez un navigateur dans la machine virtuelle.
Accédez au point de terminaison de l’application de conteneur. Vous voyez la sortie de l’image de l’application conteneur du guide de démarrage rapide.
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