Esporre un indirizzo IP statico per un gruppo di contenitori

Questo articolo illustra un modo per esporre un indirizzo IP pubblico statico per un gruppo di contenitori usando un gateway applicazione di Azure. Seguire questa procedura quando è necessario un punto di ingresso statico per un'app in contenitori esterna eseguita in Istanze di Azure Container.

In questo articolo si usa l'interfaccia della riga di comando di Azure per creare le risorse per questo scenario:

  • Una rete virtuale di Azure
  • Un gruppo di contenitori distribuito nella rete virtuale che ospita una piccola app Web
  • Un gateway applicazione con un indirizzo IP front-end pubblico, un listener per ospitare un sito Web nel gateway e una route al gruppo di contenitori back-end

Finché il gateway applicazione viene eseguito e il gruppo di contenitori espone un indirizzo IP privato stabile nella subnet delegata della rete, il gruppo di contenitori è accessibile in questo indirizzo IP pubblico.

Nota

app Azure lication Gateway supporta protocolli HTTP, HTTPS, HTTP/2 e WebSocket.

Azure addebita un gateway applicazione in base alla quantità di tempo di provisioning e disponibilità del gateway, nonché alla quantità di dati elaborati. Vedere i prezzi.

Creare una rete virtuale

In un caso tipico, potrebbe essere già presente una rete virtuale di Azure. Se non è disponibile, crearne uno come illustrato con i comandi di esempio seguenti. La rete virtuale richiede subnet separate per il gateway applicazione e il gruppo di contenitori.

Se necessario, creare un gruppo di risorse di Azure. Ad esempio:

az group create --name myResourceGroup --location eastus

Creare una rete virtuale con il comando az network vnet create. Questo comando crea la subnet myAGSubnet nella rete.

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

Usare il comando az network vnet subnet create per creare una subnet per il gruppo di contenitori back-end. Qui il nome è myACISubnet.

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

Usare il comando az network public-ip create per creare una risorsa IP pubblica statica. In un passaggio successivo questo indirizzo viene configurato come front-end del gateway applicazione.

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

Creare un gruppo di contenitori

Eseguire il comando az container create seguente per creare un gruppo di contenitori nella rete virtuale configurata nel passaggio precedente.

Il gruppo viene distribuito nella subnet myACISubnet e contiene una singola istanza denominata appcontainer che esegue il pull dell'immagine aci-helloworld . Come illustrato in altri articoli della documentazione, questa immagine include una piccola app Web scritta in Node.js che serve una pagina HTML statica.

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

Al termine della distribuzione, al gruppo di contenitori viene assegnato un indirizzo IP privato nella rete virtuale. Ad esempio, eseguire il comando az container show seguente per recuperare l'indirizzo IP del gruppo:

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

L'output è simile a: 10.0.2.4.

Per usarlo in un passaggio successivo, salvare l'indirizzo IP in una variabile di ambiente:

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

Importante

Se il gruppo di contenitori viene arrestato, avviato o riavviato, l'INDIRIZZO IP privato del gruppo di contenitori è soggetto a modifiche. In questo caso, sarà necessario aggiornare la configurazione del gateway applicazione.

Creare il gateway applicazione

Creare un gateway applicazione nella rete virtuale seguendo la procedura descritta nell'avvio rapido del gateway applicazione. Il comando az network application-gateway create seguente crea un gateway con un indirizzo IP front-end pubblico e una route al gruppo di contenitori back-end. Per informazioni dettagliate sulle impostazioni del gateway, vedere la documentazione gateway applicazione.

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

La creazione del gateway applicazione da parte di Azure può richiedere fino a 15 minuti.

Testare l'indirizzo IP pubblico

È ora possibile testare l'accesso all'app Web in esecuzione nel gruppo di contenitori dietro il gateway applicazione.

Eseguire il comando az network public-ip show per recuperare l'indirizzo IP pubblico front-end del gateway:

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

L'output è un indirizzo IP pubblico, simile a: 52.142.18.133.

Per visualizzare l'app Web in esecuzione quando è stata configurata correttamente, passare all'indirizzo IP pubblico del gateway nel browser. L'accesso riuscito è simile al seguente:

Screenshot del browser che mostra l'applicazione in esecuzione in un'istanza di contenitore di Azure

Passaggi successivi

  • Vedere un modello di avvio rapido per creare un gruppo di contenitori con un'istanza del contenitore WordPress come server back-end dietro un gateway applicazione.
  • È anche possibile configurare un gateway applicazione con un certificato per la terminazione SSL. Vedere la panoramica e l'esercitazione.
  • A seconda dello scenario, è consigliabile usare altre soluzioni di bilanciamento del carico di Azure con Istanze di Azure Container. Ad esempio, usare Gestione traffico di Azure per distribuire il traffico tra più istanze del contenitore e tra più aree. Vedere questo post di blog.