Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 da sua rede virtual (VNet). Este ponto de extremidade conecta você de forma privada e segura a um serviço com tecnologia do Azure Private Link.
Importante
Existem encargos adicionais para ativar endpoints privados nos planos Dedicado e Consumo.
Pré-requisitos
- Conta do Azure com uma assinatura ativa.
- Se não tiver uma, pode criar uma gratuitamente.
Criar um aplicativo de contêiner
Comece por iniciar sessão no portal do Azure.
Pesquise por Aplicativos de contêiner na barra de pesquisa superior.
Selecione Aplicativos de contêiner nos resultados da pesquisa.
Selecione o botão Criar.
Na página Criar Aplicativo de Contêiner , na guia Noções básicas , insira os seguintes valores.
Definição Ação Subscrição Selecione a subscrição do Azure. Grupo de recursos Selecione o link Criar novo grupo de recursos e insira my-container-apps. Nome do aplicativo de contêiner Digite my-container-app. Origem da implementação Selecione Imagem de contêiner. País/Região Selecione Central US. No campo Criar ambiente de aplicativos de contêiner , selecione o link Criar novo ambiente .
Na página Criar Ambiente de Aplicativos de Contêiner , na guia Noções Básicas , insira os seguintes valores:
Definição Valor Nome do ambiente Insira o meu ambiente. Redundância entre zonas selecione Desativado Selecione a aba Rede.
Defina Acesso à Rede Pública como Desativar: 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.
Deixe Usar sua própria rede virtual definido como Não. Você pode usar uma VNet existente, mas os pontos de extremidade privados são suportados apenas por ambientes de perfis de carga de trabalho, que exigem uma sub-rede com um intervalo mínimo de CIDR igual
/27ou maior. Para saber mais sobre o dimensionamento de sub-redes, consulte a visão geral da arquitetura de rede.Defina Ativar pontos de extremidade privados como Sim.
Defina Private endpoint name como my-private-endpoint.
No campo Rede virtual de ponto de extremidade privado, selecione o link Criar novo.
Na página Criar Rede Virtual, defina Rede Virtual como my-private-endpoint-vnet. Selecione OK.
No campo Sub-rede de rede virtual de ponto de extremidade privado, selecione o link Criar novo.
Na página Criar Sub-rede, defina Nome da Sub-rede como my-private-endpoint-vnet-subnet. Selecione OK.
Deixe o DNS definido como Zona DNS Privada do Azure.
Selecione Criar.
Na página Criar Aplicativo de Contêiner , selecione a guia Contêiner .
Selecione Usar imagem de início rápido.
Implementar a aplicação de contentor
No final da página, selecione Rever + criar.
- Se não forem encontrados erros, o botão Criar está disponível.
- Se houver erros, qualquer separador que contenha um erro é assinalado com um ponto vermelho. Vai a cada um desses separadores. Os campos que contêm um erro são destacados a vermelho ou marcados com um X vermelho. Corrige todos os erros e depois seleciona Rever + criar novamente.
Selecione Criar.
Uma página com a mensagem Implantação está em andamento é exibida. Após a implementação terminar com sucesso, aparece a mensagem A sua implementação está concluída .
Verificar a implantação
Selecione Ir para recurso para exibir seu novo aplicativo de contêiner.
Ao lado do URL da Candidatura, selecione o link para ver a sua candidatura.
Quando você navega até o ponto de extremidade do aplicativo contêiner, você vê 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.
- Se não tiver uma, pode criar uma gratuitamente.
A versão mais recente da CLI do Azure. Para garantir que está a executar a versão mais recente, execute o seguinte comando.
az upgradeA versão mais recente da extensão Azure Container Apps para a CLI do Azure. Para garantir que está a executar a versão mais recente, execute o seguinte comando.
az extension add --name containerapp --upgrade --allow-preview trueNota
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 .
Para obter mais informações sobre pré-requisitos e configuração, consulte Guia de início rápido: implantar seu primeiro aplicativo de contêiner com containerapp up.
Definir variáveis de ambiente
Defina as seguintes variáveis de ambiente.
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 seu aplicativo de contêiner.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Criar uma rede virtual
Crie uma rede virtual do Azure (VNet). Você pode usar uma VNet existente, mas os pontos de extremidade privados são suportados apenas por ambientes de perfis de carga de trabalho, que exigem uma sub-rede com um intervalo mínimo de CIDR igual
/27ou maior. Para saber mais sobre o dimensionamento de sub-redes, 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/16Crie uma sub-rede para associar à rede virtual e 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/21Recupere o ID da sub-rede. Use este ID 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
Crie o ambiente Container Apps. Os endpoints privados são suportados apenas em ambientes de perfis de execução, sendo o tipo padrão para novos ambientes.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATIONRecupere o 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)Desative 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 final 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
Recupere o endereço IP do ponto de extremidade privado. Utilize este endereço para adicionar um registo DNS à sua 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)Recupere o domínio padrão do ambiente. Utilize este domínio para adicionar um registo DNS à sua zona DNS privada.
DNS_RECORD_NAME=$(az containerapp env show \ --id $ENVIRONMENT_ID \ --query 'properties.defaultDomain' \ --output tsv | sed 's/\..*//')Crie uma zona DNS privada.
az network private-dns zone create \ --resource-group $RESOURCE_GROUP \ --name $PRIVATE_DNS_ZONECrie um link entre sua rede virtual 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 falseAdicione um registo para o seu ponto de extremidade privado à sua 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 em seu ambiente. Este aplicativo de contêiner simplesmente usa a imagem de início rápido.
Quando você navega até o ponto de extremidade do aplicativo contêiner, recebe ERR_CONNECTION_CLOSED porque o ambiente do aplicativo contêiner tem o 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ê cria 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)
Comece por iniciar sessão no portal do Azure.
Procure máquinas virtuais na barra de pesquisa superior.
Selecione Máquinas virtuais nos resultados da pesquisa.
Selecione Criar.
Na página Criar uma máquina virtual na guia Noções básicas, insira os seguintes valores.
Definição Ação Subscrição Selecione a subscrição do Azure. Grupo de recursos Selecione my-container-apps. Nome da máquina virtual Digite azurevm. País/Região Selecione Central US. Opções de disponibilidade Selecione Sem necessidade de redundância de infraestrutura. Tipo de segurança selecione Standard. Imagem Selecione Windows Server 2022 Datacenter : Azure Edition - x64 Gen2. Nome de utilizador Digite azureuser. Palavra-passe Introduza uma palavra-passe. Confirme a palavra-passe Digite a senha novamente. Portas de entrada públicas Selecione Nenhuma. Na guia Rede, insira os seguintes valores.
Definiçã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 Nenhuma. Grupo de segurança de rede NIC Selecione Avançadas. Selecione Rever + Criar.
Selecione Criar.
Definir variáveis de ambiente
Defina as seguintes variáveis de ambiente.
VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"
Criar uma VM (máquina virtual)
Execute o seguinte comando.
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 este comando, ser-lhe-á solicitada uma palavra-passe de administrador para a sua VM.
O nome de usuário do administrador deve ter entre 1 e 20 caracteres.
A senha de administrador tem os seguintes requisitos:
- Deve ter entre 12 e 123 caracteres.
- Deve ter três dos seguintes caracteres: 1 caractere minúsculo, 1 caractere maiúsculo, 1 número e 1 caractere especial.
Testar a ligação
Comece por iniciar sessão no portal do Azure.
Procure a VM que criou na barra de pesquisa superior e selecione-a nos resultados da pesquisa.
Na página Visão geral da VM, selecione Conectar e, em seguida, selecione Conectar via bastião.
Na página Bastion, selecione Deploy Bastion.
Defina Nome de usuário e Senha da VM como o nome de usuário e a senha que você usou quando criou a VM.
Selecione Ligar.
Depois de se conectar, execute o PowerShell na VM.
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 <PLACEHOLDERS.>
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>Abra um navegador na VM.
Navegue até o ponto de extremidade do aplicativo de contêiner. Você vê a saída para a imagem do aplicativo de contêiner de início rápido.
Clean up resources (Limpar recursos)
Se não pretender continuar a utilizar esta aplicação, pode remover o grupo de recursos my-container-apps . Esta 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 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