Compartilhar via


Usar um ponto de extremidade privado com um ambiente de Aplicativos de Contêiner do Azure (versão prévia)

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.

Os pontos de extremidade privados nos Aplicativos de Contêiner do Azure dão suporte apenas ao tráfego de entrada HTTP. O tráfego TCP não tem suporte.

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 Informações básicas, insira os seguintes valores.

    Configuração Ação
    Subscription Selecione sua assinatura do Azure.
    Resource group Selecione Criar e insira my-container-apps.
    Nome do aplicativo de contêiner Insira my-container-app.
    Fonte de implantação Selecione Imagem do contêiner.
    Region Selecione EUA Central.
  5. No campo Criar ambiente de Aplicativos de Contêiner, selecione o link Criar.

  6. Na página Criar Ambiente de Aplicativos de Contêiner, na guia Básico, insira os seguintes valores:

    Configuração Valor
    Nome do ambiente Insira my-environment.
    Redundância de zona Selecione Desabilitado
  7. Selecione a guia Rede para criar uma VNet (rede virtual). Por padrão, o acesso à rede pública está habilitado, o que significa que os pontos de extremidade privados estão desabilitados.

  8. Desabilite o acesso a redes públicas.

  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, na guia Informações básicas, selecione Avançar: Contêiner >.

  19. Na página Criar Aplicativo de Contêiner, na guia Contêiner, selecione Usar imagem de início rápido.

  20. Selecione Examinar e criar na parte inferior da página.

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

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

  21. 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, você verá a mensagem: Sua implantação foi concluída.

    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.

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 você esteja 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 as versões prévias dos recursos dos Aplicativos de Contêiner, instale a extensão 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-custom-vnet"
SUBNET_NAME="my-custom-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

Um ambiente em aplicativos de contêiner do Azure cria um marco de delimitação seguro em 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 workspace do Log Analytics.

  1. Crie uma rede virtual (VNet) do Azure para associar ao ambiente de Aplicativos de Contêiner. A VNet deve ter uma sub-rede disponível para a implantação do ambiente. 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. Você usa isso para criar o ponto de extremidade 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 de Aplicativos de Contêiner usando a VNet implantada nas etapas anteriores. Os pontos de extremidade privados só têm suporte em ambientes de perfis de carga 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. Você usa isso 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. Isso é necessário 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-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-o 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 VM (máquina virtual)

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
    Subscription Selecione sua assinatura do Azure.
    Resource group Selecione my-container-apps.
    Nome da máquina virtual Insira azurevm.
    Region Selecione EUA Central.
    Opções de disponibilidade Selecione Nenhuma redundância de infraestrutura necessária.
    Tipo de segurança Selecione Padrão.
    Image Selecione Windows Server 2022 Datacenter: edição do Azure – x64 Gen2.
    Nome de Usuário insira 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 VM (máquina virtual)

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 3 dos seguintes itens: 1 caractere minúsculo, 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. Isso elimina a instância Aplicativos de Contêiner do Azure e todos os serviços associados. Também elimina o grupo de recursos que o serviço Aplicativos de Contêiner do Azure criou automaticamente e que contém os componentes de rede personalizados.

Cuidado

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