Expor um endereço IP estático para um grupo de contentores

Este artigo mostra uma maneira de expor um endereço IP público estático para um grupo de contêineres usando um gateway de aplicativo do Azure. Siga estas etapas quando precisar de um ponto de entrada estático para um aplicativo em contêiner voltado para o exterior que seja executado em Instâncias de Contêiner do Azure.

Neste artigo, você usa a CLI do Azure para criar os recursos para este cenário:

  • Uma rede virtual do Azure
  • Um grupo de contêineres implantado na rede virtual que hospeda um pequeno aplicativo Web
  • Um gateway de aplicativo com um endereço IP de front-end público, um ouvinte para hospedar um site no gateway e uma rota para o grupo de contêineres de back-end

Desde que o gateway de aplicativo seja executado e o grupo de contêineres exponha um endereço IP privado estável na sub-rede delegada da rede, o grupo de contêineres estará acessível nesse endereço IP público.

Nota

O Gateway de Aplicativo do Azure dá suporte aos protocolos HTTP, HTTPS, HTTP/2 e WebSocket.

O Azure cobra por um gateway de aplicativo com base na quantidade de tempo que o gateway está provisionado e disponível, bem como na quantidade de dados que ele processa. Veja os preços.

Criar a rede virtual

Em um caso típico, talvez você já tenha uma rede virtual do Azure. Se você não tiver um, crie um como mostrado com os comandos de exemplo a seguir. A rede virtual precisa de sub-redes separadas para o gateway de aplicativo e o grupo de contêineres.

Se precisar de um, crie um grupo de recursos do Azure. Por exemplo:

az group create --name myResourceGroup --location eastus

Crie uma rede virtual com o comando az network vnet create . Este comando cria a sub-rede myAGSubnet na rede.

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

Use o comando az network vnet subnet create para criar uma sub-rede para o grupo de contêineres de back-end. Aqui, seu nome é myACISubnet.

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

Use o comando az network public-ip create para criar um recurso IP público estático. Em uma etapa posterior, esse endereço é configurado como o front-end do gateway de aplicativo.

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

Criar grupo de contentores

Execute o seguinte az container create para criar um grupo de contêineres na rede virtual que você configurou na etapa anterior.

O grupo é implantado na sub-rede myACISubnet e contém uma única instância chamada appcontainer que extrai a aci-helloworld imagem. Como mostrado em outros artigos na documentação, esta imagem empacota um pequeno aplicativo Web escrito em Node.js que serve uma página HTML estática.

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

Quando implantado com êxito, o grupo de contêineres recebe um endereço IP privado na rede virtual. Por exemplo, execute o seguinte comando az container show para recuperar o endereço IP do grupo:

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

O resultado é semelhante a: 10.0.2.4.

Para uso em uma etapa posterior, salve o endereço IP em uma variável de ambiente:

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

Importante

Se o grupo de contêineres for interrompido, iniciado ou reiniciado, o IP privado do grupo de contêineres estará sujeito a alterações. Se isso acontecer, você precisará atualizar a configuração do gateway de aplicativo.

Criar um gateway de aplicação

Crie um gateway de aplicativo na rede virtual, seguindo as etapas no início rápido do gateway de aplicativo. O comando az network application-gateway create a seguir cria um gateway com um endereço IP de frontend público e uma rota para o grupo de contêineres de back-end. Consulte a documentação do Application Gateway para obter detalhes sobre as configurações do gateway.

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

Pode levar até 15 minutos para o Azure criar o gateway de aplicativo.

Testar endereço IP público

Agora você pode testar o acesso ao aplicativo Web em execução no grupo de contêineres atrás do gateway de aplicativo.

Execute o comando az network public-ip show para recuperar o endereço IP público frontend do gateway:

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

A saída é um endereço IP público, semelhante a: 52.142.18.133.

Para exibir o aplicativo Web em execução quando configurado com êxito, navegue até o endereço IP público do gateway em seu navegador. O acesso bem-sucedido é semelhante a:

Captura de ecrã do browser a mostrar a aplicação em execução numa instância do contentor do Azure

Próximos passos

  • Veja um modelo de início rápido para criar um grupo de contêineres com uma instância de contêiner do WordPress como um servidor back-end atrás de um gateway de aplicativo.
  • Você também pode configurar um gateway de aplicativo com um certificado para terminação SSL. Veja a visão geral e o tutorial.
  • Dependendo do seu cenário, considere usar outras soluções de balanceamento de carga do Azure com Instâncias de Contêiner do Azure. Por exemplo, use o Gerenciador de Tráfego do Azure para distribuir o tráfego entre várias instâncias de contêiner e entre várias regiões. Veja esta publicação de blogue.