Condividi tramite


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

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à è supportata solo per gli ambienti del profilo del carico di lavoro.

  • Assicurati che il provider di risorse Microsoft.Cdn sia registrato per il tuo abbonamento.

    1. Iniziare accedendo al portale di Azure.
    2. Passare alla pagina della sottoscrizione e selezionare Impostazioni>Provider di risorse.
    3. Selezionare Microsoft.Cdn dall'elenco dei provider.
    4. Selezionare Registrazione.

Creare un'app contenitore

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

  1. Cercare App contenitore nella barra di ricerca superiore.

  2. Selezionare App contenitore nei risultati della ricerca.

  3. Selezionare il pulsante Crea.

  4. Nella scheda Informazioni di base della pagina Crea app contenitore eseguire le azioni seguenti.

    Impostazione Azione
    Abbonamento Seleziona la tua sottoscrizione di Azure.
    Gruppo di risorse Selezionare il collegamento Crea nuovo gruppo di risorse e immettere my-container-apps.
    Nome app contenitore Immettere my-container-app.
    Origine distribuzione Selezionare Immagine del contenitore.
    Area geografica Selezionare Stati Uniti centrali.
  5. Nel campo Crea ambiente per app container, seleziona il link Crea nuovo ambiente.

  6. Nella scheda Informazioni di base della pagina Crea ambiente app contenitore immettere i valori seguenti:

    Impostazione Valore
    Nome dell'ambiente Immettere my-environment.
    Ridondanza di zona selezionare Disabilitato
  7. Selezionare la scheda Rete.

  8. Impostare Accesso alla rete pubblica su Disabilita: blocca tutto il traffico in ingresso dalla rete Internet pubblica.

  9. Lasciare l'opzione Usa la propria rete virtuale impostata su No.

  10. Lascia gli endpoint privati abilitati impostati su No.

  11. Fare clic su Crea.

  12. Nella pagina Crea app contenitore selezionare la scheda Contenitore .

  13. Selezionare Usare immagine di avvio rapido.

Distribuire l'app container

  1. Selezionare Rivedi e crea nella parte inferiore della pagina.

    Se non vengono rilevati errori, il pulsante Crea è abilitato.

    In caso di errori, qualsiasi scheda contenente errori viene contrassegnata con un punto rosso. Andare alla scheda appropriata. I campi contenenti un errore vengono evidenziati in rosso. Dopo aver corretto tutti gli errori, selezionare nuovamente Rivedi e crea.

  2. Fare clic su Crea.

    Viene visualizzata una pagina con il messaggio Distribuzione in corso. Al termine della distribuzione, viene visualizzato il messaggio: La distribuzione è stata completata.

Verificare la distribuzione

  1. Selezionare Vai alla risorsa per visualizzare la nuova app contenitore.

  2. Selezionare il collegamento accanto a URL applicazione per visualizzare l'applicazione.

  1. Quando si passa all'endpoint dell'app contenitore, viene visualizzato il messaggio seguente:

    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.
    

    È invece possibile usare un endpoint frontdoor di Azure per accedere all'app contenitore.

Creare un profilo e un endpoint di Frontdoor di Azure

  1. Cercare Frontdoor nella barra di ricerca superiore.

  2. Selezionare Frontdoor e profili di rete CDN nei risultati della ricerca.

  3. Selezionare Azure Front Door e Creazione rapida.

  4. Selezionare il pulsante Continua a creare un Front Door.

  5. Nella pagina Crea un profilo frontdoor , nella scheda Informazioni di base , eseguire le azioni seguenti.

    Impostazione Azioni
    Gruppo di risorse Selezionare my-container-apps.
    Nome Immettere my-afd-profile.
    Livello Selezionare Premium. Il collegamento privato non è supportato per le origini per Frontdoor di Azure nel livello Standard.
    Nome del punto finale Inserire my-afd-endpoint.
    Tipo di origine Selezionare App contenitore.
    Nome host di origine Immettere il nome host dell'app contenitore. Il nome host è simile all'esempio seguente: my-container-app.orangeplant-77e5875b.centralus.azurecontainerapps.io.
    Abilitare il servizio collegamento privato Abilitare questa impostazione.
    Area geografica Selezionare (Stati Uniti) Stati Uniti centrali.
    Sottorisorsa di destinazione Selezionare managedEnvironments.
    Messaggio di richiesta Immettere AFD Private Link Request (Richiesta collegamento privato AFD).
  6. Selezionare Rivedi e crea.

  7. Fare clic su Crea.

  8. Al termine della distribuzione, selezionare Vai alla risorsa.

  9. Nella pagina di panoramica del Front Door e del profilo CDN, trova il nome host dell'endpoint. Assomiglia al seguente esempio. Prendere nota di questo nome host.

    my-afd-endpoint.<HASH>.b01.azurefd.net
    

Approvare la richiesta di connessione all'endpoint privato

  1. Passare alla pagina di panoramica per l'ambiente denominato my-environment creato in precedenza.

  2. Espandere Impostazioni>Rete.

  3. Viene visualizzato un collegamento per le richieste di connessione all'endpoint privato. Ad esempio: 1 private endpoint. Selezionare il collegamento.

  4. Nella pagina Connessioni endpoint privati, approvare ogni richiesta di connessione all'endpoint privato con la descrizione AFD Private Link Request.

    Nota

    Frontdoor di Azure presenta un problema noto per cui potrebbe creare più richieste di connessione all'endpoint privato.

Accedere all'app contenitore da Frontdoor di Azure

Passare al nome host dell'endpoint Azure Front Door registrato in precedenza. Viene visualizzato l'output per l'immagine dell'app contenitore di avvio rapido. La distribuzione globale potrebbe richiedere alcuni minuti, quindi se non viene visualizzato l'output previsto, attendere alcuni minuti e quindi aggiornare.

Pulire le risorse

Se non si intende continuare a usare questa applicazione, è possibile eliminare il contenitore app e tutti i servizi associati rimuovendo il gruppo di risorse.

  1. Selezionare il gruppo di risorse my-container-apps dalla sezione Panoramica.

  2. Selezionare il pulsante Elimina gruppo di risorse nella parte superiore della pagina di Panoramica del gruppo di risorse.

  3. Immettere il nome del gruppo di risorse my-container-apps nella finestra di dialogo Eliminare "my-container-apps".

  4. Selezionare Elimina.

    Il completamento del processo di eliminazione del gruppo di risorse potrebbe richiedere alcuni minuti.

Prerequisiti

  • Account Azure con una sottoscrizione attiva.

  • 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.

  • Questa funzionalità è disponibile solo nelle aree supportate.

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. Usi questo ID 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)
    
  3. Quando si accede all'endpoint dell'app contenitore, si riceve ERR_CONNECTION_CLOSED perché l'ambiente dell'app contenitore ha l'accesso pubblico disabilitato. È invece possibile usare un endpoint AFD per accedere all'app contenitore.

Creare una risorsa Frontdoor di Azure

  1. Assicurati che il provider di risorse Microsoft.Cdn sia registrato per il tuo abbonamento.

    az provider register --namespace Microsoft.Cdn
    
  2. Creare un profilo AFD. Il collegamento privato non è supportato per i punti di origine nell'ambito di 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 questo ID con l'ID del endpoint privato, che appare come il seguente.

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

Approvare la connessione dell'endpoint privato

Per approvare la connessione, eseguire il comando seguente. 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. Gli endpoint privati in App Azure Container supportano solo il traffico HTTP in ingresso. Il traffico TCP non è supportato.

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.

    Se l'output previsto non viene visualizzato 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. Questa azione elimina l'istanza di App Azure Container 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 le risorse esterne all'ambito di questa guida sono presenti nel gruppo di risorse specificato, verranno eliminate anche.

az group delete --name $RESOURCE_GROUP

Suggerimento

Problemi? Fatecelo sapere su GitHub aprendo un problema nel repository di Azure Container Apps.