Fornecer uma rede virtual a um ambiente interno do Azure Container Apps

O exemplo a seguir mostra como criar um ambiente Container Apps em uma rede virtual existente.

Comece por iniciar sessão no portal do Azure.

Criar um aplicativo de contêiner

Para criar seu aplicativo de contêiner, comece na home page do portal do Azure.

  1. Pesquise por Aplicativos de contêiner na barra de pesquisa superior.
  2. Selecione Aplicativos de contêiner nos resultados da pesquisa.
  3. Selecione o botão Criar.

Separador Informações Básicas

Na guia Noções básicas, execute as seguintes ações.

  1. Insira os seguintes valores na seção Detalhes do projeto.

    Definição Ação
    Subscrição Selecione a subscrição do Azure.
    Grupo de recursos Selecione Criar novo e insira my-container-apps.
    Nome do aplicativo de contêiner Digite my-container-app.
    Origem da implementação Selecione Imagem de contêiner.

Criar um ambiente

Em seguida, crie um ambiente para seu aplicativo de contêiner.

  1. Selecione a região apropriada.

    Definição Value
    País/Região Selecione Central US.
  2. No campo Criar ambiente de aplicativos de contêiner, selecione o link Criar novo.

  3. Na página Criar Ambiente de Aplicativos de Contêiner na guia Noções básicas, insira os seguintes valores:

    Definição Value
    Nome do ambiente Insira o meu ambiente.
    Tipo de ambiente Selecione Perfis de carga de trabalho.
    Redundância entre zonas selecione Desativado
  4. Selecione a guia Monitoramento para criar um espaço de trabalho do Log Analytics.

  5. Selecione Azure Log Analytics como o destino dos logs.

  6. Selecione o link Criar novo no campo de espaço de trabalho do Log Analytics e insira os seguintes valores.

    Definição Valor
    Nome Insira my-container-apps-logs.

    O campo Localização está pré-preenchido com Central US para você.

  7. Selecione OK.

Nota

Você pode usar uma rede virtual existente, mas uma sub-rede dedicada com um intervalo CIDR igual ou maior é necessária para uso com Aplicativos de /23 Contêiner ao usar o ambiente Somente consumo. Ao usar o ambiente de perfis de carga de trabalho, um /27 ou maior é necessário. Para saber mais sobre o dimensionamento de sub-redes, consulte a visão geral do ambiente de rede.

  1. Selecione a guia Rede para criar uma VNET.

  2. Selecione Sim ao lado de Usar sua própria rede virtual.

  3. Ao lado da caixa Rede virtual, selecione o link Criar novo e insira o seguinte valor.

    Definição Valor
    Nome Digite my-custom-vnet.
  4. Selecione o botão OK.

  5. Ao lado da caixa Sub-rede Infraestrutura, selecione o link Criar novo e insira os seguintes valores:

    Definição Value
    Nome da sub-rede Insira infra-rede-sub-rede.
    Bloco de endereços de rede virtual Mantenha os valores padrão.
    Bloco de endereços de sub-rede Mantenha os valores padrão.
  6. Selecione o botão OK.

  7. Em IP Virtual, selecione Interno.

  8. Selecione Criar.

Implementar a aplicação de contentor

  1. Selecione Rever e criar na parte inferior da página.

    Se nenhum erro for encontrado, o botão Criar será ativado.

    Se houver erros, qualquer guia que contenha erros será marcada com um ponto vermelho. Navegue até a guia apropriada. Os campos que contêm um erro são realçados a vermelho. Depois que todos os erros forem corrigidos, selecione Revisar e criar novamente.

  2. Selecione Criar.

    Uma página com a mensagem Implantação está em andamento é exibida. Quando a implantação for concluída com êxito, você verá a mensagem: Sua implantação foi concluída.

Pré-requisitos

  • Conta do Azure com uma assinatura ativa.
  • Instale a CLI do Azure versão 2.28.0 ou superior.

Configurar

Para entrar no Azure a partir da CLI, execute o seguinte comando e siga os prompts para concluir o processo de autenticação.

az login

Para garantir que você esteja executando a versão mais recente da CLI, execute o comando upgrade.

az upgrade

Em seguida, instale ou atualize a extensão Aplicativos de Contêiner do Azure para a CLI.

Se você receber erros sobre parâmetros ausentes ao executar az containerapp comandos na CLI do Azure ou cmdlets do Az.App módulo no Azure PowerShell, certifique-se de ter a versão mais recente da extensão Aplicativos de Contêiner do Azure instalada.

az extension add --name containerapp --upgrade

Nota

A partir de maio de 2024, as extensões da CLI do Azure não habilitam mais recursos de visualização por padrão. Para acessar os recursos de visualização do Container Apps, instale a extensão Container Apps com --allow-preview trueo .

az extension add --name containerapp --upgrade --allow-preview true

Agora que a extensão ou módulo atual está instalado, registre os Microsoft.App namespaces e Microsoft.OperationalInsights .

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Definir variáveis de ambiente

Defina as seguintes variáveis de ambiente. Substitua <PLACEHOLDERS> pelos seus valores:

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

Criar um grupo de recursos do Azure

Crie um grupo de recursos para organizar os serviços relacionados à implantação do seu aplicativo de contêiner.

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

Criar um ambiente

Um ambiente em Aplicativos de Contêiner do Azure cria um limite seguro em torno de um grupo de aplicativos de contêiner. Os aplicativos de contêiner implantados no mesmo ambiente são implantados na mesma rede virtual e gravam logs no mesmo espaço de trabalho do Log Analytics.

Registe o Microsoft.ContainerService fornecedor.

az provider register --namespace Microsoft.ContainerService

Declare uma variável para manter o nome da VNET.

VNET_NAME="my-custom-vnet"

Agora, crie uma instância da rede virtual para associar ao ambiente Container Apps. A rede virtual deve ter duas sub-redes disponíveis para a instância do aplicativo de contêiner.

Nota

O prefixo de endereço de sub-rede de rede requer um intervalo CIDR mínimo para uso com Aplicativos de /23 Contêiner ao usar o ambiente Somente consumo. Ao usar o ambiente de Perfis de Carga de Trabalho, é necessário um /27 ou maior. Para saber mais sobre o dimensionamento de sub-redes, consulte a visão geral do ambiente de rede.

az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --location $LOCATION \
  --address-prefix 10.0.0.0/16
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --address-prefixes 10.0.0.0/23

Ao usar o ambiente de perfis de carga de trabalho, você precisa atualizar a VNET para delegar a sub-rede ao Microsoft.App/environments. Esta delegação não é aplicável ao ambiente apenas de consumo.

az network vnet subnet update \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --delegations Microsoft.App/environments

Com a VNET estabelecida, agora você pode consultar o ID da sub-rede de infraestrutura.

INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`

Por fim, crie o ambiente Container Apps com a VNET e a sub-rede.

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET \
  --internal-only

A tabela a seguir descreve os parâmetros usados no .containerapp env create

Parâmetro Description
name Nome do ambiente Container Apps.
resource-group Nome do grupo de recursos.
logs-workspace-id (Opcional) A ID de um espaço de trabalho existente do Log Analytics. Se omitido, um espaço de trabalho é criado para você.
logs-workspace-key O segredo do cliente do Log Analytics. Obrigatório se estiver usando um espaço de trabalho existente.
location O local do Azure onde o ambiente deve ser implantado.
infrastructure-subnet-resource-id ID de recurso de uma sub-rede para componentes de infraestrutura e contêineres de aplicativos de usuário.
internal-only (Opcional) O ambiente não usa um IP estático público, apenas endereços IP internos disponíveis na VNET personalizada. (Requer um ID de recurso de sub-rede de infraestrutura.)

Com seu ambiente criado usando sua rede virtual personalizada, você pode implantar aplicativos de contêiner no ambiente usando o az containerapp create comando.

Configuração opcional

Você tem a opção de implantar um DNS privado e definir intervalos de IP de rede personalizados para seu ambiente de Aplicativos de Contêiner.

Implantar com um DNS privado

Se você quiser implantar seu aplicativo de contêiner com um DNS privado, execute os seguintes comandos.

Primeiro, extraia informações identificáveis do ambiente.

ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`

Em seguida, configure o DNS privado.

az network private-dns zone create \
  --resource-group $RESOURCE_GROUP \
  --name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --virtual-network $VNET_ID \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
  --resource-group $RESOURCE_GROUP \
  --record-set-name "*" \
  --ipv4-address $ENVIRONMENT_STATIC_IP \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN

Parâmetros de rede

Há três parâmetros de rede opcionais que você pode escolher definir ao chamar containerapp env create. Use essas opções quando tiver uma VNET emparelhada com intervalos de endereços separados. A configuração explícita desses intervalos garante que os endereços usados pelo ambiente de Aplicativos de Contêiner não entrem em conflito com outros intervalos na infraestrutura de rede.

Você deve fornecer valores para todas essas três propriedades ou nenhuma delas. Se eles não forem fornecidos, os valores serão gerados para você.

Parâmetro Description
platform-reserved-cidr O intervalo de endereços usado internamente para serviços de infraestrutura de ambiente. Deve ter um tamanho entre /23 e /12 ao usar o ambiente Somente consumo
platform-reserved-dns-ip Um endereço IP do platform-reserved-cidr intervalo usado para o servidor DNS interno. O endereço não pode ser o primeiro endereço no intervalo ou o endereço de rede. Por exemplo, se platform-reserved-cidr estiver definido como 10.2.0.0/16, então platform-reserved-dns-ip não pode ser 10.2.0.0 (o endereço de rede) ou 10.2.0.1 (a infraestrutura reserva o uso deste IP). Neste caso, o primeiro IP utilizável para o DNS seria 10.2.0.2.
docker-bridge-cidr O intervalo de endereços atribuído à rede de ponte do Docker. Esse intervalo deve ter um tamanho entre /28 e /12.
  • Os platform-reserved-cidr intervalos e docker-bridge-cidr endereços não podem entrar em conflito entre si ou com os intervalos de qualquer sub-rede fornecida. Além disso, certifique-se de que esses intervalos não entrem em conflito com nenhum outro intervalo de endereços na VNET.

  • Se essas propriedades não forem fornecidas, a CLI gerará automaticamente os valores de intervalo com base no intervalo de endereços da VNET para evitar conflitos de intervalo.

Clean up resources (Limpar recursos)

Se não pretender continuar a utilizar esta aplicação, pode eliminar a instância das Aplicações de Contentor do Azure e todos os serviços associados removendo o grupo de recursos my-container-apps . A exclusão desse grupo de recursos remove o grupo de recursos criado automaticamente pelo serviço Aplicativos de Contêiner que contém os componentes de rede personalizados.

Atenção

O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Se existirem recursos fora do escopo deste guia no grupo de recursos especificado, eles também serão excluídos.

az group delete --name $RESOURCE_GROUP

Recursos adicionais

  • Para usar a entrada de escopo VNET, você deve configurar o DNS.

Próximos passos