Partilhar via


Criar um link privado para um Aplicativo de Contêiner do Azure com a Porta da Frente do Azure (visualização)

Neste artigo, você aprenderá a se conectar diretamente da Porta da Frente do Azure aos seus Aplicativos de Contêiner do Azure usando um link privado em vez da Internet pública. Neste tutorial, você cria um ambiente de perfis de carga de trabalho dos Aplicativos de Contêiner do Azure, uma Porta da Frente do Azure, e os conecta com segurança por meio de um link privado. Em seguida, verifique a conectividade entre seu aplicativo de contêiner e a Porta da Frente do Azure.

Pré-requisitos

  • Conta do Azure com uma assinatura ativa.

  • Esse recurso só está disponível com a CLI do Azure. Para garantir que você esteja executando a versão mais recente da CLI do Azure, execute o seguinte comando.

    az upgrade
    
  • A 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 true
    

    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 .

  • Esse recurso só é suportado para ambientes de perfil de carga de trabalho.

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"
AFD_PROFILE="my-afd-profile"
AFD_ENDPOINT="my-afd-endpoint"
AFD_ORIGIN_GROUP="my-afd-origin-group"
AFD_ORIGIN="my-afd-origin"
AFD_ROUTE="my-afd-route"

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

  1. Crie o ambiente Container Apps.

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

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Desative o acesso à rede pública para o ambiente.

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

Implantar um aplicativo de contêiner

  1. Execute o seguinte comando para implantar um aplicativo de contêiner em seu ambiente.

    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
    
  2. Recupere seu ponto de extremidade do aplicativo de contêiner.

    ACA_ENDPOINT=$(az containerapp show \
        --name $CONTAINERAPP_NAME \
        --resource-group $RESOURCE_GROUP \
        --query properties.configuration.ingress.fqdn \
        --output tsv)
    

    Se você navegar até o ponto de extremidade do aplicativo contêiner, receberá ERR_CONNECTION_CLOSED porque o ambiente do aplicativo contêiner tem o acesso público desabilitado. Em vez disso, você usa um ponto de extremidade AFD para acessar seu aplicativo de contêiner.

Criar um perfil do Azure Front Door

Crie um perfil AFD. O link privado não é suportado para origens em um perfil AFD com SKU Standard_AzureFrontDoor.

az afd profile create \
    --profile-name $AFD_PROFILE \
    --resource-group $RESOURCE_GROUP \
    --sku Premium_AzureFrontDoor

Criar um ponto de extremidade do Azure Front Door

Adicione um ponto de extremidade ao seu perfil AFD.

az afd endpoint create \
    --resource-group $RESOURCE_GROUP \
    --endpoint-name $AFD_ENDPOINT \
    --profile-name $AFD_PROFILE \
    --enabled-state Enabled

Criar um grupo de origem do Azure Front Door

Crie um grupo de origem AFD.

az afd origin-group create \
    --resource-group $RESOURCE_GROUP \
    --origin-group-name $AFD_ORIGIN_GROUP \
    --profile-name $AFD_PROFILE \
    --probe-request-type GET \
    --probe-protocol Http \
    --probe-interval-in-seconds 60 \
    --probe-path / \
    --sample-size 4 \
    --successful-samples-required 3 \
    --additional-latency-in-milliseconds 50

Criar uma origem do Azure Front Door

Adicione uma origem AFD ao seu grupo de origem.

az afd origin create \
    --resource-group $RESOURCE_GROUP \
    --origin-group-name $AFD_ORIGIN_GROUP \
    --origin-name $AFD_ORIGIN \
    --profile-name $AFD_PROFILE \
    --host-name $ACA_ENDPOINT \
    --origin-host-header $ACA_ENDPOINT \
    --priority 1 \
    --weight 500 \
    --enable-private-link true \
    --private-link-location $LOCATION \
    --private-link-request-message "AFD Private Link Request" \
    --private-link-resource $ENVIRONMENT_ID \
    --private-link-sub-resource-type managedEnvironments

Listar conexões de ponto de extremidade privado

  1. Execute o comando a seguir para listar as conexões de ponto de extremidade privadas para seu ambiente.

    az network private-endpoint-connection list \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --type Microsoft.App/managedEnvironments
    
  2. Registre o ID do recurso de conexão de ponto de extremidade privado da resposta. A conexão de ponto de extremidade privado tem um properties.privateLinkServiceConnectionState.description valor de AFD Private Link Request. O ID do recurso de conexão de ponto de extremidade privado tem a seguinte aparência.

    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.App/managedEnvironments/my-environment/privateEndpointConnections/<PRIVATE_ENDPOINT_CONNECTION_ID>
    

    Não confunda isso com o ID de ponto de extremidade privado, que se parece com o seguinte.

    /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/eafd-Prod-centralus/providers/Microsoft.Network/privateEndpoints/<PRIVATE_ENDPOINT_ID>
    

Aprovar a conexão de ponto de extremidade privado

Execute o seguinte comando para aprovar a conexão. Substitua o <espaço reservado> pelo ID do recurso de conexão de ponto de extremidade privado que você registrou na seção anterior.

az network private-endpoint-connection approve --id <PRIVATE_ENDPOINT_CONNECTION_RESOURCE_ID>

Adicionar uma rota

Execute o seguinte comando para mapear o ponto de extremidade criado anteriormente para o grupo de origem. Os pontos de extremidade privados nos Aplicativos de Contêiner do Azure dão suporte apenas ao tráfego HTTP de entrada. Não há suporte para tráfego TCP.

az afd route create \
    --resource-group $RESOURCE_GROUP \
    --profile-name $AFD_PROFILE \
    --endpoint-name $AFD_ENDPOINT \
    --forwarding-protocol MatchRequest \
    --route-name $AFD_ROUTE \
    --https-redirect Enabled \
    --origin-group $AFD_ORIGIN_GROUP \
    --supported-protocols Http Https \
    --link-to-default-domain Enabled

Aceda à sua aplicação de contentor a partir da Porta da Frente do Azure

  1. Recupere o nome do host do seu ponto de extremidade AFD.

    az afd endpoint show \
        --resource-group $RESOURCE_GROUP \
        --profile-name $AFD_PROFILE \
        --endpoint-name $AFD_ENDPOINT \
        --query hostName \
        --output tsv
    

    Seu nome de host se parece com o exemplo a seguir.

    my-afd-endpoint.<HASH>.b01.azurefd.net
    
  2. Navegue até o nome do host. Você vê a saída para a imagem do aplicativo de contêiner de início rápido.

    Leva alguns minutos para que seu perfil AFD seja implantado globalmente, portanto, se você não vir a saída esperada no início, aguarde alguns minutos e atualize.

Clean up resources (Limpar recursos)

Se não pretender continuar a utilizar esta aplicação, pode remover o grupo de recursos my-container-apps . Isso exclui a instância do Azure Container Apps e todos os serviços associados. Ele também exclui o grupo de recursos que o serviço Aplicativos de Contêiner criou automaticamente e 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