Containerinstanties implementeren in een virtueel Azure-netwerk
Azure Virtual Network biedt beveiligde, privénetwerken voor uw Azure- en on-premises resources. Door containergroepen te implementeren in een virtueel Azure-netwerk, kunnen uw containers veilig communiceren met andere resources in het virtuele netwerk.
In dit artikel wordt beschreven hoe u de opdracht az container create in de Azure CLI gebruikt om containergroepen te implementeren in een nieuw virtueel netwerk of een bestaand virtueel netwerk.
Belangrijk
Voordat u containergroepen in virtuele netwerken implementeert, raden we u aan eerst de beperking te controleren. Zie Scenario's en resources voor virtuele netwerken voor Azure Container Instances voor netwerkscenario's en beperkingen.
Belangrijk
Implementatie van containergroepen in een virtueel netwerk is algemeen beschikbaar voor Linux- en Windows-containers, in de meeste regio's waar Azure Container Instances beschikbaar is. Zie available-regions (Beschikbare regio's) voor meer informatie.
Belangrijk
Netwerkprofielen zijn buiten gebruik gesteld vanaf de 2021-07-01
API-versie. Als u deze of een recentere versie gebruikt, negeert u alle stappen en acties met betrekking tot netwerkprofielen.
Voorbeelden in dit artikel zijn opgemaakt voor de Bash-shell. Als u liever een andere shell gebruikt, zoals PowerShell of opdrachtprompt, past u de regelvolgtekens dienovereenkomstig aan.
Implementeren in een nieuw virtueel netwerk
Notitie
Als u het IP-bereik /29 van het subnet gebruikt om slechts 3 IP-adressen te hebben. We raden u aan om altijd één bereik hierboven te gaan (nooit onder). Gebruik bijvoorbeeld subnet-IP-bereik /28, zodat u ten minste 1 of meer IP-buffer per containergroep kunt hebben. Op deze wijze kunt u voorkomen dat containers vastlopen, niet kunnen worden gestart, opnieuw kunnen worden opgestart of zelfs niet kunnen worden gestopt.
Als u wilt implementeren in een nieuw virtueel netwerk en Azure de netwerkresources automatisch voor u wilt laten maken, geeft u het volgende op wanneer u az container create uitvoert:
- Naam van virtueel netwerk
- Adresvoorvoegsel van virtueel netwerk in CIDR-indeling
- Subnetnaam
- Subnetadresvoorvoegsel in CIDR-indeling
De adresvoorvoegsels van het virtuele netwerk en subnet geven de adresruimten voor respectievelijk het virtuele netwerk en het subnet op. Deze waarden worden weergegeven in cidr-notatie (Classless Inter-Domain Routing), bijvoorbeeld 10.0.0.0/16
. Zie Een subnet van een virtueel netwerk toevoegen, wijzigen of verwijderen voor meer informatie over het werken met subnetten.
Nadat u uw eerste containergroep met deze methode hebt geïmplementeerd, kunt u implementeren in hetzelfde subnet door de namen van het virtuele netwerk en subnet op te geven, of het netwerkprofiel dat automatisch voor u wordt gemaakt in Azure. Omdat Azure het subnet naar Azure Container Instances delegeert, kunt u alleen containergroepen implementeren in het subnet.
Voorbeeld
De volgende az container create opdracht specificeert instellingen voor een nieuw virtueel netwerk en subnet. Geef de naam op van een resourcegroep die is gemaakt in een regio waar containergroepimplementaties in een virtueel netwerk beschikbaar zijn. Met deze opdracht wordt de openbare Microsoft aci-helloworld-container geïmplementeerd die een kleine Node.js webserver uitvoert die een statische webpagina aanwerkt. In de volgende sectie implementeert u een tweede containergroep in hetzelfde subnet en test u de communicatie tussen de twee containerinstanties.
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
Wanneer u met deze methode implementeert in een nieuw virtueel netwerk, kan de implementatie enkele minuten duren terwijl de netwerkresources zijn gemaakt. Na de eerste implementatie worden aanvullende implementaties van containergroepen naar hetzelfde subnet sneller voltooid.
Implementeren in bestaand virtueel netwerk
Een containergroep implementeren in een bestaand virtueel netwerk:
- Maak een subnet binnen uw bestaande virtuele netwerk, gebruik een bestaand subnet waarin al een containergroep is geïmplementeerd of gebruik een bestaand subnet dat is leeggemaakt van alle andere resources en configuratie.
- Implementeer een containergroep met az container create en geef een van de volgende handelingen op:
- Naam van virtueel netwerk en subnet
- Resource-id van virtueel netwerk en subnetresource-id, waarmee een virtueel netwerk uit een andere resourcegroep kan worden gebruikt
- Netwerkprofielnaam of -id, die u kunt verkrijgen met az network profile list
Voorbeeld
In het volgende voorbeeld wordt een tweede containergroep geïmplementeerd in hetzelfde subnet dat u eerder hebt gemaakt en wordt de communicatie tussen de twee containerinstanties gecontroleerd.
Haal eerst het IP-adres op van de eerste containergroep die u hebt geïmplementeerd, de appcontainer:
az container show --resource-group myResourceGroup \
--name appcontainer \
--query ipAddress.ip --output tsv
In de uitvoer wordt het IP-adres van de containergroep in het privésubnet weergegeven. Bijvoorbeeld:
10.0.0.4
Stel nu CONTAINER_GROUP_IP
in op het IP-adres dat u hebt opgehaald met de az container show
opdracht en voer de volgende az container create
opdracht uit. Deze tweede container, commchecker, voert een installatiekopie op basis van Alpine Linux uit en wordt uitgevoerd wget
op basis van het ip-adres van het privésubnet van de eerste containergroep.
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
Nadat deze tweede containerimplementatie is voltooid, haalt u de logboeken op, zodat u de uitvoer kunt zien van de wget
opdracht die is uitgevoerd:
az container logs --resource-group myResourceGroup --name commchecker
Als de tweede container met succes heeft gecommuniceerd met de eerste, is de uitvoer vergelijkbaar met:
Connecting to 10.0.0.4 (10.0.0.4:80)
index.html 100% |*******************************| 1663 0:00:00 ETA
In de logboekuitvoer moet worden aangegeven dat wget
het indexbestand kan worden verbonden en gedownload van de eerste container met behulp van het privé-IP-adres op het lokale subnet. Netwerkverkeer tussen de twee containergroepen blijft binnen het virtuele netwerk.
Voorbeeld - YAML
U kunt een containergroep ook implementeren in een bestaand virtueel netwerk met behulp van een YAML-bestand, een Resource Manager-sjabloon of een andere programmatische methode, zoals met de Python SDK.
Als u bijvoorbeeld een YAML-bestand gebruikt, kunt u implementeren in een virtueel netwerk met een subnet gedelegeerd aan Azure Container Instances. Geef de volgende eigenschappen op:
ipAddress
: De instellingen van het privé-IP-adres voor de containergroep.ports
: de poorten die moeten worden geopend, indien van toepassing.protocol
: Het protocol (TCP of UDP) voor de geopende poort.
subnetIds
: de resource-id's van de subnetten die moeten worden geïmplementeerdid
: De resource-id van het subnetname
: De naam van het subnet
Deze YAML maakt een containergroep met de naam appcontaineryaml in uw virtuele netwerk.
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
Implementeer de containergroep met de opdracht az container create , waarbij u de YAML-bestandsnaam voor de --file
parameter opgeeft:
az container create --resource-group myResourceGroup \
--file vnet-deploy-aci.yaml
Zodra de implementatie is voltooid, voert u de opdracht az container show uit om de status ervan weer te geven. Voorbeelduitvoer:
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
Resources opschonen
Containerinstanties verwijderen
Wanneer u klaar bent met het werken met de containerinstanties die u hebt gemaakt, verwijdert u deze met de volgende opdrachten:
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
Netwerkresources verwijderen
Voor deze functie zijn momenteel verschillende extra opdrachten vereist om de netwerkresources te verwijderen die u eerder hebt gemaakt. Als u de voorbeeldopdrachten in de vorige secties van dit artikel hebt gebruikt om uw virtuele netwerk en subnet te maken, kunt u het volgende script gebruiken om deze netwerkresources te verwijderen. In het script wordt ervan uitgegaan dat uw resourcegroep één virtueel netwerk met één netwerkprofiel bevat.
Voordat u het script uitvoert, stelt u de RES_GROUP
variabele in op de naam van de resourcegroep die het virtuele netwerk en subnet bevat dat moet worden verwijderd. Werk de naam van het virtuele netwerk bij als u niet de aci-vnet
eerder voorgestelde naam hebt gebruikt. Het script is opgemaakt voor de Bash-shell. Als u de voorkeur geeft aan een andere shell, zoals PowerShell of opdrachtprompt, moet u de variabeletoewijzing en accessors dienovereenkomstig aanpassen.
Waarschuwing
Met dit script worden resources verwijderd. Hiermee verwijdert u het virtuele netwerk en alle subnetten die het bevat. Zorg ervoor dat u geen van de resources in het virtuele netwerk meer nodig hebt, inclusief eventuele subnetten die het bevat, voordat u dit script uitvoert. Nadat deze resources zijn verwijderd, kunnen ze niet meer worden hersteld.
# 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
Volgende stappen
Zie Een Azure-containergroep maken met VNet als u een nieuw virtueel netwerk, subnet, netwerkprofiel en containergroep wilt implementeren met behulp van een Resource Manager-sjabloon.
Als u Azure Container Instances wilt implementeren waarmee installatiekopieën uit een Azure Container Registry kunnen worden opgehaald via een privé-eindpunt, raadpleegt u Implementeren naar Azure Container Instances vanuit Azure Container Registry met behulp van een beheerd identiteit.