Exposer une adresse IP statique pour un groupe de conteneurs

Cet article illustre une façon d’exposer une adresse IP publique statique pour un groupe de conteneurs à l’aide d’une passerelle d’application Azure. Procédez ainsi quand vous avez besoin d’un point d’entrée statique pour une application conteneurisée externe qui s’exécute dans Azure Container Instances.

Dans cet article, vous utilisez Azure CLI pour créer les ressources de ce scénario :

  • Un réseau virtuel Azure.
  • Un groupe de conteneurs déployé sur le réseau virtuel qui héberge une petite application web
  • Une passerelle d’application avec une adresse IP front-end publique, un écouteur pour héberger un site web sur la passerelle et une route vers le groupe de conteneurs back-end

Tant que la passerelle d’application s’exécute et que le groupe de conteneurs expose une adresse IP privée stable dans le sous-réseau délégué du réseau, le groupe de conteneurs est accessible à cette adresse IP publique.

Remarque

Azure Application Gateway prend en charge les protocoles HTTP, HTTPS, HTTP/2 et WebSocket.

Azure facture une passerelle d’application en fonction de la durée pendant laquelle elle est provisionnée et disponible ainsi que de la quantité de données qu’elle traite. Consultez les tarifs.

Création d’un réseau virtuel

Dans un cas classique, vous disposez peut-être déjà d’un réseau virtuel Azure. Si vous n’en avez pas, créez-en un comme indiqué dans les exemples de commandes suivants. Le réseau virtuel a besoin de sous-réseaux distincts pour la passerelle d’application et le groupe de conteneurs.

Si vous en avez besoin, créez un groupe de ressources Azure. Par exemple :

az group create --name myResourceGroup --location eastus

Utilisez la commande az network vnet create pour créer un réseau virtuel. Cette commande crée le sous-réseau myAGSubnet dans le réseau.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroup \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myAGSubnet \
  --subnet-prefix 10.0.1.0/24

Utilisez la commande az network vnet subnet create afin de créer un sous-réseau pour le groupe de conteneurs back-end. Ici, son nom est myACISubnet.

az network vnet subnet create \
  --name myACISubnet \
  --resource-group myResourceGroup \
  --vnet-name myVNet   \
  --address-prefix 10.0.2.0/24

Utilisez la commande az network public-ip create pour créer une ressource IP publique statique. Dans une étape ultérieure, cette adresse est configurée en tant que front-end de la passerelle d’application.

az network public-ip create \
  --resource-group myResourceGroup \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard

Créer un groupe de conteneurs

Exécutez la commande az container create suivante pour créer un groupe de conteneurs dans le réseau virtuel que vous avez configuré à l’étape précédente.

Le groupe est déployé sur le sous-réseau myACISubnet et contient une instance unique nommée appcontainer qui extrait l’image aci-helloworld. Comme indiqué dans d’autres articles de la documentation, cette image contient une petite application web écrite en Node.js qui sert une page HTML statique.

az container create \
  --name appcontainer \
  --resource-group myResourceGroup \
  --image mcr.microsoft.com/azuredocs/aci-helloworld \
  --vnet myVNet \
  --subnet myACISubnet

Une fois le déploiement correctement effectué, le groupe de conteneurs reçoit une adresse IP privée dans le réseau virtuel. Par exemple, exécutez la commande az container show suivante pour récupérer l’adresse IP du groupe :

az container show \
  --name appcontainer --resource-group myResourceGroup \
  --query ipAddress.ip --output tsv

Le résultat ressemble à ce qui suit : 10.0.2.4.

En vue d’une utilisation ultérieure, enregistrez l’adresse IP dans une variable d’environnement :

ACI_IP=$(az container show \
  --name appcontainer \
  --resource-group myResourceGroup \
  --query ipAddress.ip --output tsv)

Important

Si le groupe de conteneurs est arrêté, démarré ou redémarré, l’adresse IP privée du groupe de conteneurs est sujette à modification. Dans ce cas, vous devrez mettre à jour la configuration de la passerelle Application Gateway.

Créer une passerelle Application Gateway

Créez une passerelle d’application dans le réseau virtuel, en suivant les étapes décrites dans le guide de démarrage rapide consacré aux passerelles d’application. La commande az network application-gateway create suivante crée une passerelle avec une adresse IP front-end publique et une route vers le groupe de conteneurs back-end. Pour plus d’informations sur les paramètres de passerelle, consultez la documentation Application Gateway.

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroup \
  --capacity 2 \
  --sku Standard_v2 \
  --http-settings-protocol http \
  --public-ip-address myAGPublicIPAddress \
  --vnet-name myVNet \
  --subnet myAGSubnet \
  --servers "$ACI_IP" \ 
  --priority 100

La création de la passerelle d’application par Azure peut prendre jusqu’à 15 minutes.

Tester l’adresse IP publique

Vous pouvez maintenant tester l’accès à l’application web qui s’exécute dans le groupe de conteneurs derrière la passerelle d’application.

Exécutez la commande az network public-ip show pour récupérer l’adresse IP publique front-end de la passerelle :

az network public-ip show \
--resource-group myresourcegroup \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv

La sortie est une adresse IP publique, semblable à celle-ci : 52.142.18.133.

Si la configuration est correcte, vous pouvez afficher l’application web en cours d’exécution en accédant à l’adresse IP publique de la passerelle dans votre navigateur. Si l’accès réussit, vous devez obtenir une page semblable à celle-ci :

Capture d’écran du navigateur représentant une application exécutée dans une instance de conteneur Azure

Étapes suivantes

  • Consultez un modèle de démarrage rapide pour créer un groupe de conteneurs avec une instance de conteneur WordPress en tant que serveur back-end derrière une passerelle d’application.
  • Vous pouvez également configurer une passerelle d’application avec un certificat pour la terminaison SSL. Consultez la vue d’ensemble et le tutoriel.
  • Selon votre scénario, envisagez d’utiliser d’autres solutions Azure d’équilibrage de charge avec Azure Container Instances. Par exemple, utilisez Azure Traffic Manager pour répartir le trafic entre plusieurs instances de conteneur et entre plusieurs régions. Consultez ce billet de blog.