Share via


Konfigurera en NAT-gateway för statisk IP-adress för utgående trafik från en containergrupp

Genom att konfigurera en containergrupp med en extern IP-adress kan externa klienter använda IP-adressen för att komma åt en container i gruppen. En webbläsare kan till exempel komma åt en webbapp som körs i en container. Men för närvarande använder en containergrupp en annan IP-adress för utgående trafik. Den här utgående IP-adressen exponeras inte programmatiskt, vilket gör övervakning av containergrupper och konfiguration av klientbrandväggsregler mer komplexa.

Den här artikeln innehåller steg för att konfigurera en containergrupp i ett virtuellt nätverk som är integrerat med en NAT-gateway (Network Address Translation). Genom att konfigurera en NAT-gateway till SNAT ett undernätsadressintervall som delegerats till Azure Container Instances (ACI) kan du identifiera utgående trafik från dina containergrupper. Utgående containergrupptrafik använder nat-gatewayens offentliga IP-adress. En enda NAT-gateway kan användas av flera containergrupper som distribueras i det virtuella nätverkets undernät som delegerats till ACI.

I den här artikeln använder du Azure CLI för att skapa resurser för det här scenariot:

  • Containergrupper som distribueras i ett delegerat undernät i det virtuella nätverket
  • En NAT-gateway som distribueras i nätverket med en statisk offentlig IP-adress

Sedan validerar du utgående från exempelcontainergrupper via NAT-gatewayen.

Kommentar

ACI-tjänsten rekommenderar att du integrerar med en NAT-gateway för containerbaserade arbetsbelastningar som har statiska utgående men inte statiska ingresskrav. För ACI-arkitektur som stöder både statisk ingress och utgående information, se följande självstudie: Använda Azure Firewall för ingress och utgående.

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Förutsättningar

Starta Azure Cloud Shell

Azure Cloud Shell är ett interaktivt gränssnitt som du kan använda för att utföra stegen i den här artikeln. Den har vanliga Azure-verktyg förinstallerat och har konfigurerats för användning med ditt konto.

Om du vill öppna Cloud Shell väljer du bara Prova från det övre högra hörnet i ett kodblock. Du kan också starta Cloud Shell i en separat webbläsarflik genom att gå till https://shell.azure.com.

När Cloud Shell öppnas kontrollerar du att Bash har valts för din miljö. Efterföljande sessioner använder Azure CLI i en Bash-miljö, Välj Kopiera för att kopiera kodblocken, klistra in dem i Cloud Shell och tryck på Retur för att köra det.

Logga in på Azure

Cloud Shell autentiseras automatiskt under det första kontot som loggas in med. Använd följande skript för att logga in med en annan prenumeration och ersätt <Subscription ID> med ditt Azure-prenumerations-ID. Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

Mer information finns i ange en aktiv prenumeration eller logga in interaktivt

Kommentar

Om du vill ladda ned det fullständiga skriptet går du till fullständigt skript.

Kom igång

I den här självstudien används en randomiserad variabel. Om du använder en befintlig resursgrupp ändrar du värdet för den här variabeln på rätt sätt.

resourceGroup=resourceGroup$RANDOM

Azure-resursgrupp: Om du inte redan har en Azure-resursgrupp skapar du en resursgrupp med kommandot az group create . Ändra platsvärdet efter behov.

az group create --name $resourceGroup --location eastus

Distribuera ACI i ett virtuellt nätverk

I ett vanligt fall kanske du redan har ett virtuellt Azure-nätverk där du kan distribuera en containergrupp. I demonstrationssyfte skapar följande kommandon ett virtuellt nätverk och undernät när containergruppen skapas. Undernätet delegeras till Azure Container Instances.

Containergruppen kör en liten webbapp från avbildningen aci-helloworld . Som du ser i andra artiklar i dokumentationen paketar den här bilden en liten webbapp skriven i Node.js som hanterar en statisk HTML-sida.

Skapa containergruppen med kommandot 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

Kommentar

Justera värdet --subnet address-prefix för för det IP-adressutrymme som du behöver i undernätet. Det minsta undernätet som stöds är /29, vilket ger åtta IP-adresser. Vissa >IP-adresser är reserverade för användning av Azure, som du kan läsa mer om här.

Skapa en offentlig IP-adress

I följande avsnitt använder du Azure CLI för att distribuera en Azure NAT-gateway i det virtuella nätverket. Bakgrund finns i Snabbstart: Skapa en NAT-gateway med Azure CLI.

Använd först az network vnet public-ip create för att skapa en offentlig IP-adress för NAT-gatewayen. Detta används för att komma åt Internet. Du får en varning om en kommande icke-bakåtkompatibel ändring där Standard SKU IP-adresser som standard är medvetna om tillgänglighetszonen. Du kan läsa mer om användningen av tillgänglighetszoner och offentliga IP-adresser här.

az network public-ip create \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --sku standard \
  --zone 1 \
  --allocation static

Lagra den offentliga IP-adressen i en variabel för användning under valideringssteget senare i det här skriptet.

ngPublicIp="$(az network public-ip show \
  --name myPublicIP \
  --resource-group $resourceGroup \
  --query ipAddress --output tsv)"

Distribuera en NAT-gateway till ett virtuellt nätverk

Använd följande az network nat gateway create för att skapa en NAT-gateway som använder den offentliga IP-adress som du skapade i föregående steg.

az network nat gateway create \
  --resource-group $resourceGroup \
  --name myNATgateway \
  --public-ip-addresses myPublicIP \
  --idle-timeout 10

Konfigurera NAT-tjänsten för källundernät

Vi konfigurerar källundernätet aci-subnet så att det använder en specifik NAT-gatewayresurs myNATgateway med az network vnet subnet update. Det här kommandot aktiverar NAT-tjänsten i det angivna undernätet.

az network vnet subnet update \
    --resource-group $resourceGroup  \
    --vnet-name aci-vnet \
    --name aci-subnet \
    --nat-gateway myNATgateway

Testa utgående trafik från en containergrupp

Testa inkommande åtkomst till körningen appcontainer i det virtuella nätverket genom att bläddra till brandväggens offentliga IP-adress. Tidigare lagrade du den offentliga IP-adressen i variabeln $NG_PUBLIC_IP

Distribuera följande exempelcontainer till det virtuella nätverket. När den körs skickar den en enda HTTP-begäran till http://checkip.dyndns.org, som visar avsändarens IP-adress (den utgående IP-adressen). Om programregeln i brandväggen är korrekt konfigurerad returneras brandväggens offentliga IP-adress.

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

Visa containerloggarna för att bekräfta att IP-adressen är samma som den offentliga IP-adress som vi skapade i det första steget i självstudien.

az container logs \
  --resource-group $resourceGroup \
  --name testegress

Utdata liknar följande:

<html><head><title>Current IP Check</title></head><body>Current IP Address: 52.142.18.133</body></html>

Den här IP-adressen ska matcha den offentliga IP-adress som skapades i det första steget i självstudien.

echo $ngPublicIp

Rensa resurser

När den inte längre behövs kan du använda az group delete för att ta bort resursgruppen och alla relaterade resurser på följande sätt. Parametern --no-wait återför kontrollen till kommandotolken utan att vänta på att uppgiften slutförs. Parametern --yes bekräftar att du vill ta bort resurserna utan att tillfrågas ytterligare en gång.

az group delete --name $resourceGroup --yes --no-wait

Nästa steg

I den här artikeln konfigurerar du containergrupper i ett virtuellt nätverk bakom en Azure NAT-gateway. Med den här konfigurationen konfigurerar du en enda statisk IP-adressutgång från Azure Container Instances-containergrupper.

Felsökningshjälp finns i Felsöka NAT-anslutning för virtuella Azure-nätverk.