Compartilhar via


Usar um ponto de extremidade privado com um ambiente de Aplicativos de Contêiner do Azure

Neste artigo, você aprenderá a usar um ponto de extremidade privado para acessar com segurança seu Aplicativo de Contêiner do Azure sem expô-lo à Internet pública.

Um ponto de extremidade privado usa um endereço IP privado em sua rede virtual (VNet). Esse ponto de extremidade privado conecta você de forma privada e segura a um serviço da plataforma do Link Privado do Azure.

Importante

cobranças adicionais para habilitar pontos de extremidade privados nos planos Dedicado e Consumo.

Pré-requisitos

Criar um aplicativo de contêiner

Para começar, entre no 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.

  4. Na página Criar Aplicativo de Contêiner , na guia Noções Básicas, insira os valores a seguir.

    Configuração Ação
    Subscrição Selecione sua assinatura do Azure.
    Grupo de recursos Selecione o link Criar novo grupo de recursos e insira my-container-apps.
    Nome do aplicativo de contêiner Insira my-container-app.
    Origem da implantação Selecione Imagem do contêiner.
    Região Selecione EUA Central.
  5. No campo Criar Ambiente de Aplicativos de Contêiner , selecione o link Criar novo ambiente .

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

    Configuração Valor
    Nome do ambiente Insira my-environment.
    Redundância de zona Selecione Desabilitado
  7. Selecione a guia Rede.

  8. Defina o Acesso à Rede Pública para Desabilitar: bloqueie todo o tráfego de entrada da Internet pública. Por padrão, o acesso à rede pública está habilitado, o que significa que os pontos de extremidade privados estão desabilitados.

  9. Defina Usar sua própria rede virtual como Não. Você pode usar uma VNet existente, mas os pontos de extremidade privados só têm suporte em ambientes de perfis de carga de trabalho, que exigem uma sub-rede com um intervalo mínimo de CIDR de /27 ou maior. Para saber mais sobre o dimensionamento de sub-rede, consulte a visão geral da arquitetura de rede.

  10. Defina Habilitar pontos de extremidade privados como Sim.

  11. Defina o nome do ponto de extremidade privado como my-private-endpoint.

  12. No campo Rede virtual do ponto de extremidade privado, selecione o link Criar.

  13. Na página Criar rede virtual, defina Rede Virtual como my-private-endpoint-vnet. Selecione OK.

  14. No campo Sub-rede da rede virtual do ponto de extremidade privado, selecione o link Criar.

  15. Na página Criar sub-rede, defina Nome da sub-rede como my-private-endpoint-vnet-subnet. Selecione OK.

  16. Defina DNS como Zona DNS privada do Azure.

  17. Selecione Criar.

  18. Na página Criar Aplicativo de Contêiner , selecione a guia Contêiner .

  19. Selecione Usar imagem de início rápido.

Implantar o aplicativo de contêiner

  1. Na parte inferior da página, selecione Examinar + criar.

    • Se nenhum erro for encontrado, o botão Criar estará disponível.
    • Se houver erros, qualquer guia que contenha um erro será marcada com um ponto vermelho. Acesse todas essas guias. Os campos que contêm um erro são realçados em vermelho ou marcados com um X vermelho. Corrija todos os erros e selecione Examinar + criar novamente.
  2. Selecione Criar.

    Uma página com a mensagem A implantação está em andamento é exibida. Depois que a implantação for concluída com êxito, a mensagem Sua implantação está completa aparecerá.

Verificar a implantação

  1. Selecione Ir para o recurso para exibir o novo aplicativo de contêiner.

  2. Ao lado da URL do Aplicativo, selecione o link para exibir seu aplicativo.

  1. Ao acessar o endpoint do aplicativo de contêiner, você verá a seguinte mensagem:

    The public network access on this managed environment is disabled. To connect to this managed environment, please use the Private Endpoint from inside your virtual network. To learn more https://aka.ms/PrivateEndpointTroubleshooting.
    

Pré-requisitos

  • Conta do Azure com uma assinatura ativa.

  • A versão mais recente da CLI do Azure. Para verificar se está executando a versão mais recente, execute o comando a seguir.

    az upgrade
    
  • A versão mais recente da extensão Aplicativos de Contêiner do Azure para a CLI do Azure. Para verificar se está executando a versão mais recente, execute o comando a seguir.

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

    Observação

    A partir de maio de 2024, as extensões da CLI do Azure já não permitem funcionalidades de versão prévia do recurso por padrão. Para acessar a versão prévia dos recursos dos Aplicativos de Contêiner, instale a extensão dos Aplicativos de Contêiner com --allow-preview true.

Para obter mais informações sobre pré-requisitos e configuração, consulte Início Rápido: Implantar seu primeiro aplicativo de contêiner com o aplicativo containerapp up.

Definir variáveis de ambiente

Defina as variáveis de ambiente a seguir.

RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
VNET_NAME="my-vnet"
SUBNET_NAME="my-subnet"
PRIVATE_ENDPOINT="my-private-endpoint"
PRIVATE_ENDPOINT_CONNECTION="my-private-endpoint-connection"
PRIVATE_DNS_ZONE="privatelink.${LOCATION}.azurecontainerapps.io"
DNS_LINK="my-dns-link"

Criar um grupo de recursos do Azure

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

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

Criar uma rede virtual

  1. Crie uma VNet (rede virtual) do Azure. Você pode usar uma VNet existente, mas os pontos de extremidade privados só têm suporte em ambientes de perfis de carga de trabalho, que exigem uma sub-rede com um intervalo mínimo de CIDR de /27 ou maior. Para saber mais sobre o dimensionamento de sub-rede, consulte a visão geral da arquitetura de rede.

    az network vnet create \
        --resource-group $RESOURCE_GROUP \
        --name $VNET_NAME \
        --location $LOCATION \
        --address-prefix 10.0.0.0/16
    
  2. Crie uma sub-rede para associar à VNet e para conter o ponto de extremidade privado.

    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 10.0.0.0/21
    
  3. Recupere a ID da sub-rede. Use essa identificação para criar o endpoint privado.

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --query "id" \
        --output tsv)
    

Criar um ambiente

  1. Crie o ambiente dos Aplicativos de Contêiner. Os endpoints privados são suportados apenas em ambientes de perfil de cargas de trabalho, que é o tipo padrão para novos ambientes.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Recupere a ID do ambiente. Use essa ID para configurar o ambiente.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Desabilite o acesso à rede pública para o ambiente. Essa configuração é necessária para habilitar pontos de extremidade privados.

    az containerapp env update \
        --id $ENVIRONMENT_ID \
        --public-network-access Disabled
    

Criar um ponto de extremidade privado

Crie o ponto de extremidade privado no ambiente e na sub-rede que você criou anteriormente.

az network private-endpoint create \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --name $PRIVATE_ENDPOINT \
    --subnet $SUBNET_ID \
    --private-connection-resource-id $ENVIRONMENT_ID \
    --connection-name $PRIVATE_ENDPOINT_CONNECTION \
    --group-id managedEnvironments

Configurar a zona DNS privada

  1. Recupere o endereço IP do ponto de extremidade privado. Use esse endereço para adicionar um registro DNS à zona DNS privada.

    PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \
        --name $PRIVATE_ENDPOINT \
        --resource-group $RESOURCE_GROUP \
        --query 'customDnsConfigs[0].ipAddresses[0]' \
        --output tsv)
    
  2. Recupere o domínio padrão do ambiente. Use esse domínio para adicionar um registro DNS à zona DNS privada.

    DNS_RECORD_NAME=$(az containerapp env show \
        --id $ENVIRONMENT_ID \
        --query 'properties.defaultDomain' \
        --output tsv | sed 's/\..*//')
    
  3. Crie uma zona DNS privada.

    az network private-dns zone create \
        --resource-group $RESOURCE_GROUP \
        --name $PRIVATE_DNS_ZONE
    
  4. Crie um link entre sua VNet e sua zona DNS privada.

    az network private-dns link vnet create \
        --resource-group $RESOURCE_GROUP \
        --zone-name $PRIVATE_DNS_ZONE \
        --name $DNS_LINK \
        --virtual-network $VNET_NAME \
        --registration-enabled false
    
  5. Adicione um registro para o ponto de extremidade privado à zona DNS privada.

    az network private-dns record-set a add-record \
        --resource-group $RESOURCE_GROUP \
        --zone-name $PRIVATE_DNS_ZONE \
        --record-set-name $DNS_RECORD_NAME \
        --ipv4-address $PRIVATE_ENDPOINT_IP_ADDRESS
    

Implantar um aplicativo de contêiner

Implante um aplicativo de contêiner no seu ambiente. Esse aplicativo de contêiner simplesmente usa a imagem de início rápido.

Quando você navegar até o ponto de extremidade do aplicativo de contêiner, receberá ERR_CONNECTION_CLOSED porque o ambiente do aplicativo de contêiner tem acesso público desabilitado. Em vez disso, você acessa seu aplicativo de contêiner usando seu ponto de extremidade privado.

az containerapp up \
    --name $CONTAINERAPP_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --environment $ENVIRONMENT_NAME \
    --image mcr.microsoft.com/k8se/quickstart:latest \
    --target-port 80 \
    --ingress external \
    --query properties.configuration.ingress.fqdn

Verificar a conexão de ponto de extremidade privado

Nesta seção, você criará uma máquina virtual associada à sua VNet para poder acessar o aplicativo de contêiner definido usando seu ponto de extremidade privado.

Criar uma máquina virtual (VM)

Para começar, entre no portal do Azure.

  1. Pesquise máquinas virtuais na barra de pesquisa superior.

  2. Selecione Máquinas virtuais nos resultados da pesquisa.

  3. Selecione Criar.

  4. Na página Criar uma máquina virtual, na guia Informações básicas, insira os seguintes valores.

    Configuração Ação
    Subscrição Selecione sua assinatura do Azure.
    Grupo de recursos Selecione my-container-apps.
    Nome da máquina virtual Insira azurevm.
    Região Selecione EUA Central.
    Opções de disponibilidade Selecione Nenhuma redundância de infraestrutura necessária.
    Tipo de segurança Selecione Padrão.
    Imagem Selecione Windows Server 2022 Datacenter: edição do Azure – x64 Gen2.
    Nome de Usuário Digite azureuser.
    Senha Digite uma senha.
    Confirmar senha Digite a senha novamente.
    Porta de entrada públicas Selecione Nenhum.
  5. Na guia Rede, insira os seguintes valores.

    Configuração Ação
    Rede virtual Selecione my-private-endpoint-vnet.
    Sub-rede Selecione my-private-endpoint-vnet-subnet (10.0.0.0/23).
    IP público Selecione Nenhum.
    Grupo de segurança de rede da NIC Selecione Avançado.
  6. Selecione Examinar + criar.

  7. Selecione Criar.

Definir variáveis de ambiente

Defina as variáveis de ambiente a seguir.

VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"

Criar uma máquina virtual (VM)

Execute o comando a seguir.

az vm create \
    --resource-group $RESOURCE_GROUP \
    --name $VM_NAME \
    --image Win2022Datacenter \
    --public-ip-address "" \
    --vnet-name $VNET_NAME \
    --subnet $SUBNET_NAME \
    --admin-username $VM_ADMIN_USERNAME

Depois de executar esse comando, você será solicitado a fornecer uma senha de administrador para sua VM.

O nome de usuário do administrador deve ter entre 1 e 20 caracteres.

A senha do administrador tem os seguintes requisitos:

  • Precisa ter entre 12 e 123 caracteres.
  • Deve ter três dos seguintes caracteres: 1 caractere de maiúsculas e minúsculas, 1 caractere maiúsculo, 1 número e 1 caractere especial.

Testar a conexão

  1. Para começar, entre no portal do Azure.

  2. Pesquise a VM que você criou na barra de pesquisa superior e selecione-a nos resultados da pesquisa.

  3. Na página Visão geral da VM, selecione Conectar e, em seguida, selecione Conectar via Bastion.

  4. Na página do Bastion, selecione Implantar Bastion.

  5. Defina o nome de usuário e a senha da VM com o nome de usuário e a senha usados ao criar a VM.

  6. Selecione Conectar.

  7. Depois de se conectar, execute o PowerShell na VM.

  8. No PowerShell, execute o seguinte comando. Substitua os <ESPAÇOS RESERVADOS> pelos seus valores.

    nslookup <CONTAINER_APP_ENDPOINT>
    

    A saída é semelhante ao exemplo a seguir, com seus valores substituindo os <ESPAÇOS RESERVADOS>.

    Server:  UnKnown
    Address:  168.63.129.16
    
    Non-authoritative answer:
    Name:    <ENVIRONMENT_DEFAULT_DOMAIN>.privatelink.<LOCATION>.azurecontainerapps.io
    
    Address:  10.0.0.4
    Aliases:  <CONTAINER_APP_ENDPOINT>
    
  9. Abra um navegador na VM.

  10. Navegue até o ponto de extremidade do aplicativo de contêiner. Você verá a saída da imagem do aplicativo de contêiner de início rápido.

Limpar os recursos

Se você não continuar usando esse aplicativo, poderá remover o grupo de recursos my-container-apps. Essa ação exclui a instância dos Aplicativos de Contêiner do Azure e todos os serviços associados.

Atenção

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

az group delete --name $RESOURCE_GROUP