Compartilhar via


Criar um link privado para um Aplicativo de Contêiner do Azure com o Azure Front Door (versão prévia)

Neste artigo, você aprende a se conectar diretamente do Azure Front Door aos Aplicativos de Contêiner do Azure usando um link privado em vez da Internet pública. Neste tutorial, você criará um ambiente de perfis de carga de trabalho dos Aplicativos de Contêiner do Azure, um Azure Front Door e os conectará com segurança por meio de um link privado. Em seguida, você verifica a conectividade entre seu aplicativo de contêiner e o Azure Front Door.

Pré-requisitos

  • Conta do Azure com uma assinatura ativa.

  • Esse recurso só está disponível na CLI do Azure. Para verificar se você está executando a versão mais recente da CLI do Azure, 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.

  • Esse recurso só tem suporte em ambientes de perfil de carga de trabalho.

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"
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 aplicativo de contêiner.

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

Criar um ambiente

  1. Criar o ambiente dos Aplicativos de Contêiner.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Recuperar 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. Desabilitar o acesso à rede pública para o ambiente.

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

Implantar um aplicativo contêiner

  1. Execute o comando a seguir para implantar um aplicativo de contêiner no 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. Recuperar o domínio do 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 de contêiner, receberá ERR_CONNECTION_CLOSED porque o ambiente do aplicativo de contêiner tem acesso público desabilitado. Em vez disso, use um ponto de extremidade do AFD para acessar o aplicativo de contêiner.

Criar um perfil do Azure Front Door

Crie um perfil do AFD. Não há suporte para link privado de origens em um perfil do AFD com SKU Standard_AzureFrontDoor.

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

Crie um ponto de extremidade do Azure Front Door

Adicionar um ponto de extremidade ao seu perfil do 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

Criar um grupo de origem do 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

Adicionar uma origem do AFD ao 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 privado para seu ambiente.

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

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

    Não confunda isso com a ID do ponto de extremidade privado, que se parece com a 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 comando a seguir para aprovar a conexão. Substitua o <ESPAÇO RESERVADO> pela 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 comando a seguir para mapear o ponto de extremidade que você criou 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 de entrada HTTP. O tráfego TCP não tem suporte.

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

Acessar seu aplicativo de contêiner do Azure Front Door

  1. Recuperar o nome do host do ponto de extremidade do 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ê verá a saída da imagem do aplicativo de contêiner de início rápido.

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

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