Condividi tramite


Creare un collegamento privato a un'app contenitore di Azure con Frontdoor di Azure (anteprima)

Questo articolo illustra come connettersi direttamente da Frontdoor di Azure alle app Azure Container usando un collegamento privato anziché la rete Internet pubblica. In questa esercitazione viene creato un ambiente dei profili di carico di lavoro di App Contenitore di Azure, un frontdoor di Azure e li si connette in modo sicuro tramite un collegamento privato. Verificare quindi la connettività tra l'app contenitore e frontdoor di Azure.

Prerequisiti

  • Account Azure con una sottoscrizione attiva.

  • Questa funzionalità è disponibile solo con l'interfaccia della riga di comando di Azure. Per assicurarsi di eseguire la versione più recente dell'interfaccia della riga di comando di Azure, eseguire il comando seguente.

    az upgrade
    
  • La versione più recente dell'estensione App Azure Container per l'interfaccia della riga di comando di Azure. Per assicurarsi di eseguire la versione più recente, eseguire il comando seguente.

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

    Nota

    A partire da maggio 2024, le estensioni dell'interfaccia della riga di comando di Azure non abilitano più le funzionalità di anteprima per impostazione predefinita. Per accedere alle funzionalità di anteprima di App contenitore, installare l'estensione App contenitore con --allow-preview true.

  • Questa funzionalità è supportata solo per gli ambienti del profilo del carico di lavoro.

Per altre informazioni sui prerequisiti e sulla configurazione, vedere Avvio rapido: Distribuire la prima app contenitore con containerapp up.

Impostare le variabili di ambiente

Impostare le variabili di ambiente seguenti.

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"

Creare un gruppo di risorse di Azure

Creare un gruppo di risorse per organizzare i servizi correlati alla distribuzione dell'app contenitore.

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

Crea un ambiente

  1. Creare l'ambiente App contenitore.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    
  2. Recuperare l'ID ambiente. Questa operazione viene usata per configurare l'ambiente.

    ENVIRONMENT_ID=$(az containerapp env show \
        --resource-group $RESOURCE_GROUP \
        --name $ENVIRONMENT_NAME \
        --query "id" \
        --output tsv)
    
  3. Disabilitare l'accesso alla rete pubblica per l'ambiente.

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

Distribuire un'app contenitore

  1. Eseguire il comando seguente per distribuire un'app contenitore nell'ambiente in uso.

    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. Recuperare l'endpoint dell'app contenitore.

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

    Se si passa all'endpoint dell'app contenitore, si riceve ERR_CONNECTION_CLOSED perché l'ambiente dell'app contenitore ha accesso pubblico disabilitato. È invece possibile usare un endpoint AFD per accedere all'app contenitore.

Creare una risorsa Frontdoor di Azure

Creare un profilo AFD. Il collegamento privato non è supportato per le origini in un profilo AFD con SKU Standard_AzureFrontDoor.

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

Creare un endpoint Frontdoor di Azure

Aggiungere un endpoint al profilo afd.

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

Creare un gruppo di origine di Frontdoor di Azure

Creare un gruppo di origine 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

Creare un'origine frontdoor di Azure

Aggiungere un'origine AFD al gruppo di origine.

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

Elencare le connessioni all’endpoint privato

  1. Eseguire il comando seguente per elencare le connessioni dell'endpoint privato per l'ambiente in uso.

    az network private-endpoint-connection list \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP \
        --type Microsoft.App/managedEnvironments
    
  2. Registrare l'ID risorsa di connessione dell'endpoint privato dalla risposta. La connessione all'endpoint privato ha il properties.privateLinkServiceConnectionState.description valore .AFD Private Link Request L'ID risorsa di connessione dell'endpoint privato è simile al seguente.

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

    Non confondere questa operazione con l'ID endpoint privato, simile al seguente.

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

Approvare la connessione dell'endpoint privato

Eseguire il comando seguente per approvare la connessione. Sostituire placeholder> con l'ID <risorsa di connessione dell'endpoint privato registrato nella sezione precedente.

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

Aggiungere una route

Eseguire il comando seguente per eseguire il mapping dell'endpoint creato in precedenza al gruppo di origine.

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

Accedere all'app contenitore da Frontdoor di Azure

  1. Recuperare il nome host dell'endpoint afd.

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

    Il nome host è simile all'esempio seguente.

    my-afd-endpoint.<HASH>.b01.azurefd.net
    
  2. Passare al nome host. Viene visualizzato l'output per l'immagine dell'app contenitore di avvio rapido.

    La distribuzione globale del profilo afd richiede alcuni minuti, quindi se non viene visualizzato l'output previsto in un primo momento, attendere alcuni minuti e quindi aggiornare.

Pulire le risorse

Se non si intende continuare a usare questa applicazione, è possibile rimuovere il gruppo di risorse my-container-apps. In questo modo viene eliminata l'istanza di App contenitore di Azure e tutti i servizi associati. Elimina anche il gruppo di risorse creato automaticamente dal servizio App contenitore che contiene i componenti di rete personalizzati.

Attenzione

Nell'esempio seguente, il gruppo di risorse specificato e tutte le risorse al suo interno vengono eliminati. Se nel gruppo di risorse specificato sono presenti anche risorse diverse da quelle usate in questa guida, verranno eliminate.

az group delete --name $RESOURCE_GROUP