Exponera en statisk IP-adress för en containergrupp

Den här artikeln visar ett sätt att exponera en statisk offentlig IP-adress för en containergrupp med hjälp av en Azure-programgateway. Följ de här stegen när du behöver en statisk startpunkt för en externt riktad containerapp som körs i Azure Container Instances.

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

  • Ett virtuellt Azure-nätverk
  • En containergrupp som distribueras i det virtuella nätverket som är värd för en liten webbapp
  • En programgateway med en offentlig IP-adress för klientdelen, en lyssnare som ska vara värd för en webbplats på gatewayen och en väg till serverdelscontainergruppen

Så länge programgatewayen körs och containergruppen exponerar en stabil privat IP-adress i nätverkets delegerade undernät är containergruppen tillgänglig på den här offentliga IP-adressen.

Kommentar

Azure Application Gateway stöder protokollen HTTP, HTTPS, HTTP/2 och WebSocket.

Azure debiterar för en programgateway baserat på hur lång tid gatewayen etableras och är tillgänglig samt mängden data som den bearbetar. Se priser.

Skapa virtuella nätverk

I vanliga fall kanske du redan har ett virtuellt Azure-nätverk. Om du inte har någon skapar du en som visas med följande exempelkommandon. Det virtuella nätverket behöver separata undernät för programgatewayen och containergruppen.

Om du behöver en skapar du en Azure-resursgrupp. Till exempel:

az group create --name myResourceGroup --location eastus

Skapa ett virtuellt nätverk med kommandot az network vnet create . Det här kommandot skapar undernätet myAGSubnet i nätverket.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroup \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myAGSubnet \
  --subnet-prefix 10.0.1.0/24

Använd kommandot az network vnet subnet create för att skapa ett undernät för serverdelscontainergruppen. Här är namnet myACISubnet.

az network vnet subnet create \
  --name myACISubnet \
  --resource-group myResourceGroup \
  --vnet-name myVNet   \
  --address-prefix 10.0.2.0/24

Använd kommandot az network public-ip create för att skapa en statisk offentlig IP-resurs. I ett senare steg konfigureras den här adressen som klientdelen av programgatewayen.

az network public-ip create \
  --resource-group myResourceGroup \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard

Skapa containergrupp

Kör följande az container create för att skapa en containergrupp i det virtuella nätverk som du konfigurerade i föregående steg.

Gruppen distribueras i undernätet myACISubnet och innehåller en enda instans med namnet appcontainer som hämtar 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.

az container create \
  --name appcontainer \
  --resource-group myResourceGroup \
  --image mcr.microsoft.com/azuredocs/aci-helloworld \
  --vnet myVNet \
  --subnet myACISubnet

När containergruppen har distribuerats tilldelas den en privat IP-adress i det virtuella nätverket. Kör till exempel följande az container show-kommando för att hämta gruppens IP-adress:

az container show \
  --name appcontainer --resource-group myResourceGroup \
  --query ipAddress.ip --output tsv

Utdata liknar följande: 10.0.2.4.

Spara IP-adressen i en miljövariabel för användning i ett senare steg:

ACI_IP=$(az container show \
  --name appcontainer \
  --resource-group myResourceGroup \
  --query ipAddress.ip --output tsv)

Viktigt!

Om containergruppen stoppas, startas om eller startas om kan containergruppens privata IP-adress ändras. Om detta händer måste du uppdatera konfigurationen av programgatewayen.

Skapa Application Gateway

Skapa en programgateway i det virtuella nätverket genom att följa stegen i snabbstarten för programgatewayen. Följande az network application-gateway create-kommando skapar en gateway med en offentlig IP-adress för klientdelen och en väg till serverdelscontainergruppen. Mer information om gatewayinställningarna finns i Application Gateway-dokumentationen .

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroup \
  --capacity 2 \
  --sku Standard_v2 \
  --http-settings-protocol http \
  --public-ip-address myAGPublicIPAddress \
  --vnet-name myVNet \
  --subnet myAGSubnet \
  --servers "$ACI_IP" \ 
  --priority 100

Det kan ta upp till 15 minuter för Azure att skapa programgatewayen.

Testa offentlig IP-adress

Nu kan du testa åtkomsten till webbappen som körs i containergruppen bakom programgatewayen.

Kör kommandot az network public-ip show för att hämta gatewayens offentliga IP-adress för klientdelen:

az network public-ip show \
--resource-group myresourcegroup \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv

Utdata är en offentlig IP-adress som liknar: 52.142.18.133.

Om du vill visa webbappen som körs när den har konfigurerats går du till gatewayens offentliga IP-adress i webbläsaren. Lyckad åtkomst liknar:

Skärmbild av webbläsare med en app som körs i en Azure-containerinstans

Nästa steg

  • Se en snabbstartsmall för att skapa en containergrupp med en WordPress-containerinstans som en serverdelsserver bakom en programgateway.
  • Du kan också konfigurera en programgateway med ett certifikat för SSL-avslutning. Se översikten och självstudien.
  • Beroende på ditt scenario bör du överväga att använda andra Azure-belastningsutjämningslösningar med Azure Container Instances. Använd till exempel Azure Traffic Manager för att distribuera trafik över flera containerinstanser och över flera regioner. Läs det här blogginlägget.