Een NAT-gateway configureren voor statisch IP-adres voor uitgaand verkeer van een containergroep
Door een containergroep met een extern IP-adres in te stellen, kunnen externe clients het IP-adres gebruiken voor toegang tot een container in de groep. Een browser heeft bijvoorbeeld toegang tot een web-app die wordt uitgevoerd in een container. Momenteel gebruikt een containergroep echter een ander IP-adres voor uitgaand verkeer. Dit uitgaande IP-adres wordt niet programmatisch weergegeven, waardoor het bewaken en configureren van clientfirewallregels voor containergroepen complexer wordt.
Dit artikel bevat stappen voor het configureren van een containergroep in een virtueel netwerk dat is geïntegreerd met een NAT-gateway (Network Address Translation). Door een NAT-gateway te configureren voor SNAT een subnetadresbereik dat is gedelegeerd aan Azure Container Instances (ACI), kunt u uitgaand verkeer van uw containergroepen identificeren. Het uitgaande verkeer van de containergroep maakt gebruik van het openbare IP-adres van de NAT-gateway. Meerdere containergroepen die zijn geïmplementeerd in het subnet van het virtuele netwerk, kunnen één NAT-gateway gebruiken.
In dit artikel gebruikt u de Azure CLI om de resources voor dit scenario te maken:
- Containergroepen die zijn geïmplementeerd op een gedelegeerd subnet in het virtuele netwerk
- Een NAT-gateway die in het netwerk is geïmplementeerd met een statisch openbaar IP-adres
Vervolgens valideert u uitgaand verkeer van voorbeeldcontainergroepen via de NAT-gateway.
Notitie
De ACI-service raadt aan om te integreren met een NAT-gateway voor in containers geplaatste workloads met statische uitgaande gegevens, maar niet met statische toegangsbeheervereisten. Zie de volgende zelfstudie voor ACI-architectuur die zowel statisch inkomend als uitgaand verkeer ondersteunt: Azure Firewall gebruiken voor inkomend en uitgaand verkeer.
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Azure Cloud Shell starten
Azure Cloud Shell is een gratis interactieve shell waarmee u de stappen in dit artikel kunt uitvoeren. In deze shell zijn algemene Azure-hulpprogramma's vooraf geïnstalleerd en geconfigureerd voor gebruik met uw account.
Als u Cloud Shell wilt openen, selecteert u Proberen in de rechterbovenhoek van een codeblok. U kunt Cloud Shell ook openen in een afzonderlijk browsertabblad door naar https://shell.azure.com te gaan.
Wanneer Cloud Shell wordt geopend, controleert u of Bash is geselecteerd voor uw omgeving. Volgende sessies gebruiken Azure CLI in een Bash-omgeving, selecteer Kopiëren om de codeblokken te kopiëren, plak deze in Cloud Shell en druk op Enter om deze uit te voeren.
Aanmelden bij Azure
Cloud Shell wordt automatisch geverifieerd onder het eerste account waarmee is aangemeld. Gebruik het volgende script om u aan te melden met een ander abonnement, waarbij u <Subscription ID>
uw Azure-abonnements-id vervangt. Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
subscription="<subscriptionId>" # add subscription here
az account set -s $subscription # ...or use 'az login'
Zie Voor meer informatie het instellen van een actief abonnement of het interactief aanmelden
Notitie
Als u het volledige script wilt downloaden, gaat u naar het volledige script.
Aan de slag
In deze zelfstudie wordt gebruikgemaakt van een gerandomiseerde variabele. Als u een bestaande resourcegroep hebt gebruikt, wijzigt u de waarde van deze variabele op de juiste manier.
resourceGroup=resourceGroup$RANDOM
Azure-resourcegroep: Als u nog geen Azure-resourcegroep hebt, maakt u een resourcegroep met de opdracht az group create . Wijzig de locatiewaarde naar wens.
az group create --name $resourceGroup --location eastus
ACI implementeren in een virtueel netwerk
In een typisch geval hebt u mogelijk al een virtueel Azure-netwerk waarin een containergroep moet worden geïmplementeerd. Voor demonstratiedoeleinden maken de volgende opdrachten een virtueel netwerk en subnet wanneer de containergroep wordt gemaakt. Het subnet wordt gedelegeerd aan Azure Container Instances.
De containergroep voert een kleine web-app uit vanuit de aci-helloworld
installatiekopieën. Zoals wordt weergegeven in andere artikelen in de documentatie, verpakt deze afbeelding een kleine web-app die is geschreven in Node.js die een statische HTML-pagina dient.
Maak de containergroep met de opdracht az container create :
az container create \
--name appcontainer \
--resource-group $resourceGroup \
--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
Notitie
Pas de waarde aan van --subnet address-prefix
de IP-adresruimte die u nodig hebt in uw subnet. Het kleinste ondersteunde subnet is /29, dat acht IP-adressen biedt. Sommige >IP-adressen zijn gereserveerd voor gebruik door Azure. Hier vindt u meer informatie.
Een openbaar IP-adres maken
In de volgende secties gebruikt u de Azure CLI om een Azure NAT-gateway in het virtuele netwerk te implementeren. Zie quickstart voor achtergrond: Een NAT-gateway maken met behulp van Azure CLI.
Gebruik eerst az network vnet public-ip create om een openbaar IP-adres voor de NAT-gateway te maken. De gateway gebruikt dit openbare IP-adres voor toegang tot internet. U ontvangt een waarschuwing over een aanstaande wijziging die fouten veroorzaakt, waarbij Standaard SKU-IP-adressen standaard op de hoogte zijn van de beschikbaarheidszone. Hier vindt u meer informatie over het gebruik van beschikbaarheidszones en openbare IP-adressen.
az network public-ip create \
--name myPublicIP \
--resource-group $resourceGroup \
--sku standard \
--zone 1 \
--allocation static
Sla het openbare IP-adres op in een variabele voor gebruik tijdens de validatiestap verderop in dit script.
ngPublicIp="$(az network public-ip show \
--name myPublicIP \
--resource-group $resourceGroup \
--query ipAddress --output tsv)"
Een NAT-gateway implementeren in een virtueel netwerk
Gebruik de volgende az network nat gateway create om een NAT-gateway te maken die gebruikmaakt van het openbare IP-adres dat u in de vorige stap hebt gemaakt.
az network nat gateway create \
--resource-group $resourceGroup \
--name myNATgateway \
--public-ip-addresses myPublicIP \
--idle-timeout 10
NAT-service voor bronsubnet configureren
We configureren het bronsubnet aci-subnet voor het gebruik van een specifieke NAT-gatewayresource myNATgateway met az network vnet subnet update. Met deze opdracht wordt de NAT-service op het opgegeven subnet geactiveerd.
az network vnet subnet update \
--resource-group $resourceGroup \
--vnet-name aci-vnet \
--name aci-subnet \
--nat-gateway myNATgateway
Uitgaand verkeer van een containergroep testen
Test binnenkomende toegang tot het appcontainer
actieve netwerk in het virtuele netwerk door naar het openbare IP-adres van de firewall te bladeren. Eerder hebt u het openbare IP-adres opgeslagen in variabele $NG_PUBLIC_IP
Implementeer de volgende voorbeeldcontainer in het virtuele netwerk. Wanneer deze wordt uitgevoerd, wordt één HTTP-aanvraag verzonden naar http://checkip.dyndns.org
, waarin het IP-adres van de afzender (het uitgaande IP-adres) wordt weergegeven. Als de toepassingsregel op de firewall juist is geconfigureerd, wordt het openbare IP-adres van de firewall geretourneerd.
az container create \
--resource-group $resourceGroup \
--name testegress \
--image mcr.microsoft.com/azuredocs/aci-tutorial-sidecar \
--command-line "curl -s http://checkip.dyndns.org" \
--restart-policy OnFailure \
--vnet aci-vnet \
--subnet aci-subnet
Bekijk de containerlogboeken om te bevestigen dat het IP-adres hetzelfde is als het openbare IP-adres dat we in de eerste stap van de zelfstudie hebben gemaakt.
az container logs \
--resource-group $resourceGroup \
--name testegress
De uitvoer ziet er ongeveer zo uit:
<html><head><title>Current IP Check</title></head><body>Current IP Address: 52.142.18.133</body></html>
Dit IP-adres moet overeenkomen met het openbare IP-adres dat in de eerste stap van de zelfstudie is gemaakt.
echo $ngPublicIp
Resources opschonen
Wanneer u deze niet meer nodig hebt, kunt u az group delete gebruiken om de resourcegroep en alle gerelateerde resources als volgt te verwijderen. De parameter --no-wait
retourneert het besturingselement naar de prompt zonder te wachten totdat de bewerking is voltooid. De --yes
parameter bevestigt dat u de resources wilt verwijderen zonder een andere prompt om dit te doen.
az group delete --name $resourceGroup --yes --no-wait
Volgende stappen
In dit artikel stelt u containergroepen in een virtueel netwerk in achter een Azure NAT-gateway. Met behulp van deze configuratie stelt u één statisch IP-adres in vanuit Container Instances-containergroepen van Azure Container Instances.
Zie de verbinding met Azure Virtual Network NAT oplossen voor hulp bij het oplossen van problemen.