Connecter les points de terminaison de conteneur à un réseau virtuel locataire
Dans cette rubrique, nous vous montrons comment connecter des points de terminaison de conteneur à un réseau virtuel client existant créé via SDN. Vous utilisez le pilote réseau l2bridge (et éventuellement l2tunnel) disponible avec le plug-in libnetwork Windows pour Docker afin de créer un réseau de conteneurs sur la machine virtuelle du locataire.
Dans la rubrique Pilotes réseau de conteneur, nous avons abordé les multiples pilotes réseau disponibles via Docker sur Windows. Pour SDN, utilisez les pilotes l2bridge et l2tunnel . Pour les deux pilotes, chaque point de terminaison de conteneur se trouve dans le même sous-réseau virtuel que la machine virtuelle hôte de conteneur (locataire).
Le service de mise en réseau hôte (HNS), via le plug-in de cloud privé, affecte dynamiquement les adresses IP pour les points de terminaison de conteneur. Les points de terminaison de conteneur ont des adresses IP uniques, mais partagent la même adresse MAC de la machine virtuelle hôte de conteneur (locataire) en raison de la traduction d’adresses de couche 2.
La stratégie réseau (ACL, encapsulation et QoS) pour ces points de terminaison de conteneur est appliquée dans l’hôte Physique Hyper-V tel que reçu par le contrôleur de réseau et défini dans les systèmes de gestion de couche supérieure.
Les différences entre les pilotes l2bridge et l2tunnel sont les suivantes :
l2bridge | l2Tunnel |
---|---|
Points de terminaison de conteneur qui résident sur :
|
TOUT le trafic réseau entre deux points de terminaison de conteneur est transféré à l’hôte Physique Hyper-V, quel que soit l’hôte ou le sous-réseau. La stratégie réseau s’applique au trafic réseau entre sous-réseaux et entre hôtes. |
Remarque
Ces modes de mise en réseau ne fonctionnent pas pour connecter des points de terminaison de conteneur Windows à un réseau virtuel de locataire dans le cloud public Azure.
Prérequis
Une infrastructure SDN déployée avec le contrôleur de réseau.
Un réseau virtuel locataire a été créé.
Une machine virtuelle de locataire déployée avec la fonctionnalité conteneur Windows activée, Docker installé et la fonctionnalité Hyper-V activée. La fonctionnalité Hyper-V est nécessaire pour installer plusieurs fichiers binaires pour les réseaux l2bridge et l2tunnel.
# To install HyperV feature without checks for nested virtualization dism /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V /All
Remarque
La virtualisation imbriquée et l’exposition des extensions de virtualisation ne sont pas requises, sauf si vous utilisez des conteneurs Hyper-V.
Workflow
1. Ajoutez plusieurs configurations IP à une ressource de carte réseau de machine virtuelle existante via le contrôleur de réseau (hôte Hyper-V)2. Activez le proxy réseau sur l’hôte pour allouer des adresses IP d’autorité de certification pour les points de terminaison de conteneur (hôte Hyper-V)3. Installez le plug-in de cloud privé pour affecter des adresses IP d’autorité de certification aux points de terminaison de conteneur (machine virtuelle hôte de conteneur)4. Créer un réseau l2bridge ou l2tunnel à l’aide de docker (machine virtuelle hôte de conteneur)
Notes
Plusieurs configurations IP ne sont pas prises en charge sur les ressources de carte réseau de machine virtuelle créées via System Center Virtual Machine Manager. Pour ces types de déploiements, il est recommandé de créer la ressource de carte réseau de machine virtuelle hors bande à l’aide de PowerShell du contrôleur de réseau.
1. Ajouter plusieurs configurations IP
Dans cette étape, nous partons du principe que la carte réseau de la machine virtuelle du locataire a une configuration IP avec l’adresse IP 192.168.1.9 et qu’elle est attachée à un ID de ressource de réseau virtuel « VNet1 » et à la ressource de sous-réseau de machine virtuelle « Subnet1 » dans le sous-réseau IP 192.168.1.0/24. Nous ajoutons 10 adresses IP pour les conteneurs de 192.168.1.101 à 192.168.1.110.
Import-Module NetworkController
# Specify Network Controller REST IP or FQDN
$uri = "<NC REST IP or FQDN>"
$vnetResourceId = "VNet1"
$vsubnetResourceId = "Subnet1"
$vmnic= Get-NetworkControllerNetworkInterface -ConnectionUri $uri | where {$_.properties.IpConfigurations.Properties.PrivateIPAddress -eq "192.168.1.9" }
$vmsubnet = Get-NetworkControllerVirtualSubnet -VirtualNetworkId $vnetResourceId -ResourceId $vsubnetResourceId -ConnectionUri $uri
# For this demo, we will assume an ACL has already been defined; any ACL can be applied here
$allowallacl = Get-NetworkControllerAccessControlList -ConnectionUri $uri -ResourceId "AllowAll"
foreach ($i in 1..10)
{
$newipconfig = new-object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfiguration
$props = new-object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfigurationProperties
$resourceid = "IP_192_168_1_1"
if ($i -eq 10)
{
$resourceid += "10"
$ipstr = "192.168.1.110"
}
else
{
$resourceid += "0$i"
$ipstr = "192.168.1.10$i"
}
$newipconfig.ResourceId = $resourceid
$props.PrivateIPAddress = $ipstr
$props.PrivateIPAllocationMethod = "Static"
$props.Subnet = new-object Microsoft.Windows.NetworkController.Subnet
$props.Subnet.ResourceRef = $vmsubnet.ResourceRef
$props.AccessControlList = new-object Microsoft.Windows.NetworkController.AccessControlList
$props.AccessControlList.ResourceRef = $allowallacl.ResourceRef
$newipconfig.Properties = $props
$vmnic.Properties.IpConfigurations += $newipconfig
}
New-NetworkControllerNetworkInterface -ResourceId $vmnic.ResourceId -Properties $vmnic.Properties -ConnectionUri $uri
2. Activer le proxy réseau
Au cours de cette étape, vous allez autoriser le proxy réseau à allouer plusieurs adresses IP à la machine virtuelle hôte du conteneur.
Pour activer le proxy réseau, exécutez le script ConfigureMCNP.ps1 sur l’hôte Hyper-V qui héberge la machine virtuelle hôte de conteneur (locataire).
PS C:\> ConfigureMCNP.ps1
3. Installer le plug-in de cloud privé
Dans cette étape, vous installez un plug-in pour permettre au service HNS de communiquer avec le proxy réseau sur l’hôte Hyper-V.
Pour installer le plug-in, exécutez le script InstallPrivateCloudPlugin.ps1 à l’intérieur de la machine virtuelle hôte de conteneur (locataire).
PS C:\> InstallPrivateCloudPlugin.ps1
4. Créer un réseau de conteneurs l2bridge
Dans cette étape, vous utilisez la docker network create
commande sur la machine virtuelle hôte de conteneur (locataire) pour créer un réseau l2bridge.
# Create the container network
C:\> docker network create -d l2bridge --subnet="192.168.1.0/24" --gateway="192.168.1.1" MyContainerOverlayNetwork
# Attach a container to the MyContainerOverlayNetwork
C:\> docker run -it --network=MyContainerOverlayNetwork <image> <cmd>
Notes
L’attribution d’adresses IP statiques n’est pas prise en charge avec les réseaux de conteneurs l2bridge ou l2tunnel lorsqu’elles sont utilisées avec la pile SDN Microsoft.
Plus d’informations
Pour plus d’informations sur le déploiement d’une infrastructure SDN, consultez Déployer une infrastructure réseau à définition logicielle.