Déployer des instance de conteneur dans un réseau virtuel Azure
Un réseau virtuel Azure fournit un accès réseau privé et sécurisé à vos ressources Azure et locales. En déployant des groupes de conteneurs dans un réseau virtuel Azure, vos conteneurs peuvent communiquer en toute sécurité avec d’autres ressources dans le réseau virtuel.
Cet article explique comment utiliser la commande az container create dans Azure CLI pour déployer des groupes de conteneurs sur un réseau virtuel nouveau ou existant.
Important
- Les sous-réseaux doivent être délégués avant d’utiliser un réseau virtuel
- Avant de déployer des groupes de conteneurs dans des réseaux virtuels, nous vous suggérons de vérifier au préalable la limitation. Pour les scénarios et les limitations de mise en réseau, consultez Ressources et scénarios relatifs aux réseaux virtuels pour Azure Container Instances.
- Le déploiement d’un groupe de conteneurs sur un réseau virtuel est généralement disponible pour les conteneurs Linux et Windows, dans la plupart des régions où Azure Container Instances est disponible. Pour plus d’informations, consultez Régions disponibles.
Important
Les profils réseau ont été retirés depuis la version 2021-07-01
de l’API. Si vous utilisez cette version ou une version plus récente, ignorez les étapes et actions relatives aux profils réseau.
Les exemples présentés dans cet article sont mis en forme pour l’interpréteur de commandes Bash. Si vous préférez un autre interpréteur de commandes comme PowerShell ou l’invite de commande, modifiez les caractères de continuation de ligne en conséquence.
Prérequis
Vous avez besoin d’un groupe de ressources pour gérer toutes les ressources utilisées dans les exemples suivants. Pour créer un groupe de ressources, utilisez az group create :
az group create --name myResourceGroup --location eastus
Déployer dans un nouveau réseau virtuel
Remarque
Si vous utilisez la plage d’adresses IP de sous-réseau /29 pour avoir seulement 3 adresses IP, nous vous recommandons de toujours aller une plage au-dessus (jamais en dessous). Par exemple, utilisez la plage d’adresses IP de sous-réseau /28 pour disposer d’au moins un tampon IP ou plus par groupe de conteneurs. En procédant ainsi, vous pouvez éviter que les conteneurs soient bloqués, ne puissent pas démarrer, redémarrer ou s’arrêter.
Pour déployer dans un nouveau réseau virtuel et laisser Azure créer automatiquement les ressources réseau, spécifiez les éléments suivants lorsque vous exécutez as container create :
- Nom du réseau virtuel
- Préfixe d’adresse de réseau virtuel au format CIDR
- Nom du sous-réseau
- Préfixe d’adresse de sous-réseau au format CIDR
Le réseau virtuel et les préfixes d’adresse de sous-réseau spécifient les espaces d’adressage du réseau virtuel et du sous-réseau, respectivement. Ces valeurs sont représentées en notation CIDR (Classless Inter-domain Routing), par exemple 10.0.0.0/16
. Pour plus d’informations sur l’utilisation des sous-réseaux, consultez Ajouter, modifier ou supprimer un sous-réseau de réseau virtuel.
Une fois que vous avez déployé votre premier groupe de conteneurs avec cette méthode, vous pouvez effectuer le déploiement sur le même sous-réseau en spécifiant les noms de réseau virtuel et de sous-réseau, ou le profil réseau qu’Azure crée automatiquement pour vous. Comme Azure délègue le sous-réseau à Azure Container Instances, vous ne pouvez déployer que des groupes de conteneurs dans le sous-réseau.
Exemple
La commande az container create suivante spécifie les paramètres pour un nouveau réseau virtuel et un nouveau sous-réseau. Fournissez le nom d’un groupe de ressources créé dans une région où des déploiements de groupe de conteneurs dans un réseau virtuel sont disponibles. Cette commande déploie le conteneur Microsoft aci-helloworld public qui exécute un petit serveur web Node.js qui gère une page web statique. Dans la section suivante, vous allez déployer un deuxième groupe de conteneurs dans le même sous-réseau et tester la communication entre les deux instances de conteneur.
az container create \
--name appcontainer \
--resource-group myResourceGroup \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--vnet aci-vnet \
--vnet-address-prefix 10.0.0.0/16 \
--subnet aci-subnet \
--subnet-address-prefix 10.0.0.0/24
Lorsque vous déployez dans un nouveau réseau virtuel avec cette méthode, l’opération peut prendre quelques minutes, le temps de créer les ressources réseau. Après le déploiement initial, les déploiements suivants de groupes de conteneurs sur le même sous-réseau s’effectuent plus rapidement.
Déployer dans un réseau virtuel existant
Pour déployer un groupe de conteneurs dans un réseau virtuel existant :
- Créez un sous-réseau au sein de votre réseau virtuel existant, utilisez un sous-réseau existant dans lequel un groupe de conteneurs est déjà déployé, ou utilisez un sous-réseau existant vide de toute autre ressource et configuration. Le sous-réseau que vous utilisez pour les groupes de conteneurs peut contenir des groupes de conteneurs uniquement. Avant de déployer un groupe de conteneurs sur un sous-réseau, vous devez déléguer explicitement le sous-réseau avant l’approvisionnement. Une fois délégué, le sous-réseau ne peut être utilisé que pour les groupes de conteneur. Si vous tentez de déployer des ressources autres que des groupes de conteneurs dans un sous-réseau délégué, l’opération échoue.
- Déployez un groupe de conteneurs avec az container create et spécifiez un des éléments suivants :
- Nom du réseau virtuel et nom du sous-réseau
- ID de ressource de réseau virtuel et ID de ressource de sous-réseau, ce qui permet d’utiliser un réseau virtuel d’un groupe de ressources différent
Exemple
L’exemple suivant déploie un deuxième groupe de conteneurs sur le sous-réseau créé précédemment et vérifie la communication entre les deux instances de conteneur.
Tout d’abord, obtenez l’adresse IP du premier groupe de conteneurs déployé, appcontainer :
az container show --resource-group myResourceGroup \
--name appcontainer \
--query ipAddress.ip --output tsv
La sortie affiche l’adresse IP du groupe de conteneurs dans le sous-réseau privé. Par exemple :
10.0.0.4
Maintenant, attribuez à CONTAINER_GROUP_IP
l’adresse IP que vous avez récupérée avec la commande az container show
et exécutez la commande suivante az container create
. Ce deuxième conteneur, commchecker, utilise une image Linux Alpine et exécute wget
sur l’adresse IP du sous-réseau privé du premier groupe de conteneurs.
CONTAINER_GROUP_IP=<container-group-IP-address>
az container create \
--resource-group myResourceGroup \
--name commchecker \
--image alpine:3.5 \
--command-line "wget $CONTAINER_GROUP_IP" \
--restart-policy never \
--vnet aci-vnet \
--subnet aci-subnet
Après ce deuxième déploiement de conteneur, effectuez une extraction des journaux correspondants pour voir la sortie de la commande wget
qu’il a exécutée :
az container logs --resource-group myResourceGroup --name commchecker
Si le deuxième conteneur a correctement communiqué avec le premier, la sortie doit être similaire à ceci :
Connecting to 10.0.0.4 (10.0.0.4:80)
index.html 100% |*******************************| 1663 0:00:00 ETA
La sortie du journal doit montrer que wget
a réussie à se connecter le fichier d’index et à le télécharger à partir du premier conteneur à l’aide de son adresse IP privée dans le sous-réseau local. Le trafic réseau entre les deux groupes de conteneurs est resté dans le réseau virtuel.
Exemple – YAML
Vous pouvez également déployer un groupe de conteneurs sur un réseau virtuel existant en utilisant un fichier YAML, un modèle Resource Manager ou une autre méthode de programmation, telle que le Kit de développement logiciel (SDK) Python.
Par exemple, lors de l’utilisation d’un fichier YAML, vous pouvez effectuer un déploiement sur un réseau virtuel avec un sous-réseau délégué à Azure Container Instances. Spécifiez les propriétés suivantes :
ipAddress
: paramètres d’adresse IP privée pour le groupe de conteneurs.ports
: ports à ouvrir, le cas échéant.protocol
: protocole (TCP ou UDP) du port ouvert.
subnetIds
: ID de ressource des sous-réseaux sur lesquels effectuer le déploiementid
: ID de ressource du sous-réseau.name
: nom du sous-réseau.
Ce fichier YAML crée un groupe de conteneurs nommé appcontaineryaml dans votre réseau virtuel.
apiVersion: '2021-07-01'
location: westus
name: appcontaineryaml
properties:
containers:
- name: appcontaineryaml
properties:
image: mcr.microsoft.com/azuredocs/aci-helloworld
ports:
- port: 80
protocol: TCP
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
ipAddress:
type: Private
ports:
- protocol: tcp
port: '80'
osType: Linux
restartPolicy: Always
subnetIds:
- id: <subnet-id>
name: default
tags: null
type: Microsoft.ContainerInstance/containerGroups
Déployez le groupe de conteneurs avec la commande az container create, en spécifiant le nom du fichier YAML dans le paramètre --file
:
az container create --resource-group myResourceGroup \
--file vnet-deploy-aci.yaml
Une fois le déploiement effectué, exécutez la commande az container show pour afficher son état. Exemple de sortie :
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- ------------------------------------------ ----------- --------- --------------- -------- ----------
appcontaineryaml myResourceGroup Running mcr.microsoft.com/azuredocs/aci-helloworld 10.0.0.5:80 Private 1.0 core/1.5 gb Linux westus
Nettoyer les ressources
Supprimer des instances de conteneur
Lorsque vous avez fini d’utiliser les instances de conteneur que vous avez créées, supprimez-les avec les commandes suivantes :
az container delete --resource-group myResourceGroup --name appcontainer -y
az container delete --resource-group myResourceGroup --name commchecker -y
az container delete --resource-group myResourceGroup --name appcontaineryaml -y
Supprimer des ressources réseau
Cette fonctionnalité nécessite pour le moment plusieurs commandes supplémentaires pour supprimer les ressources réseau que vous avez créées précédemment. Si vous avez utilisé les exemples de commande dans les sections précédentes de cet article pour créer votre réseau virtuel et votre sous-réseau, vous pouvez utiliser le script suivant pour supprimer ces ressources réseau. Le script suppose que votre groupe de ressources contient un seul réseau virtuel avec un seul profil réseau.
Avant d’exécuter le script, attribuez à la variable RES_GROUP
le nom du groupe de ressources contenant le réseau virtuel et le sous-réseau à supprimer. Mettez à jour le nom du réseau virtuel si vous n’avez pas utilisé le nom aci-vnet
suggéré plus tôt. Le script est mis en forme pour l’interpréteur de commandes Bash. Si vous préférez un autre interpréteur de commandes, par exemple PowerShell ou l’invite de commandes, vous devez ajuster l’affectation des variables et des accesseurs de manière appropriée.
Avertissement
Ce script supprime les ressources ! Le réseau virtuel et tous les sous-réseaux qu’il contient sont supprimés. Assurez-vous de n’avoir plus besoin des ressources du réseau virtuel, y compris des sous-réseaux qu’il contient, avant d’exécuter ce script. Une fois supprimées, ces ressources sont irrécupérables.
# Replace <my-resource-group> with the name of your resource group
# Assumes one virtual network in resource group
RES_GROUP=<my-resource-group>
# Get network profile ID
# Assumes one profile in virtual network
NETWORK_PROFILE_ID=$(az network profile list --resource-group $RES_GROUP --query [0].id --output tsv)
# Delete the network profile
az network profile delete --id $NETWORK_PROFILE_ID -y
# Delete virtual network
az network vnet delete --resource-group $RES_GROUP --name aci-vnet
Étapes suivantes
Pour déployer un nouveau réseau virtuel, sous-réseau, profil réseau et groupe de conteneurs à l’aide d’un modèle Resource Manager, consultez Créer un groupe de conteneurs Azure avec un réseau virtuel.
Pour déployer des Azure Container Instances qui peuvent extraire des images d’un Azure Container Registry via un point de terminaison privé, consultez Déployer sur les instances de conteneur Azure à partir de Azure Container Registry à l’aide d’un point de terminaison managé identité.