Condividi tramite


Usare un endpoint privato con un ambiente di App Azure Container (anteprima)

Questo articolo illustra come usare un endpoint privato per accedere in modo sicuro all'app Azure Container senza esporla alla rete Internet pubblica.

Un endpoint privato usa un indirizzo IP privato dalla rete virtuale.A private endpoints uses a private IP address from your virtual network (VNet). Questo endpoint si connette privatamente e in modo sicuro a un servizio basato su collegamento privato di Azure.

Gli endpoint privati in App Azure Container supportano solo il traffico HTTP in ingresso. Il traffico TCP non è supportato.

Prerequisiti

Creare un'app contenitore

Iniziare accedendo al portale di Azure.

  1. Cercare App contenitore nella barra di ricerca superiore.

  2. Selezionare App contenitore nei risultati della ricerca.

  3. Selezionare il pulsante Crea.

  4. Nella pagina Crea app contenitore della scheda Informazioni di base immettere i valori seguenti.

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

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

    Impostazione Valore
    Nome ambiente Immettere my-environment.
    Ridondanza della zona selezionare Disabilitato
  7. Selezionare la scheda Rete per creare una rete virtuale.Select the Networking tab to create a virtual network (VNet). Per impostazione predefinita, l'accesso alla rete pubblica è abilitato, ovvero gli endpoint privati sono disabilitati.

  8. Disabilitare l'accesso alla rete pubblica.

  9. Lasciare l'opzione Usa la propria rete virtuale impostata su No. È possibile usare una rete virtuale esistente, ma gli endpoint privati sono supportati solo dagli ambienti dei profili di carico di lavoro, che richiedono una subnet con un intervallo CIDR minimo o /27 superiore. Per altre informazioni sul dimensionamento delle subnet, vedere la panoramica dell'architettura di networking.

  10. Impostare Abilita endpoint privati su .

  11. Impostare Nome endpoint privato su my-private-endpoint.

  12. Nel campo Rete virtuale endpoint privato selezionare il collegamento Crea nuovo.

  13. Nella pagina Crea Rete virtuale impostare Rete virtuale su my-private-endpoint-vnet. Seleziona OK.

  14. Nel campo Subnet della rete virtuale dell'endpoint privato selezionare il collegamento Crea nuovo.

  15. Nella pagina Crea subnet impostare Nome subnet su my-private-endpoint-vnet-subnet. Seleziona OK.

  16. Lasciare DNS impostato su Zona DNS privato di Azure.

  17. Selezionare Crea.

  18. Nella pagina Crea app contenitore nella scheda Informazioni di base selezionare Avanti : Contenitore >.

  19. Nella pagina Crea app contenitore nella scheda Contenitore selezionare Usa immagine di avvio rapido.

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

  21. Seleziona Crea.

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

    Quando si passa all'endpoint dell'app contenitore, si riceve ERR_CONNECTION_CLOSED perché l'ambiente dell'app contenitore ha accesso pubblico disabilitato. È invece possibile accedere all'app contenitore usando l'endpoint privato.

Prerequisiti

  • Account Azure con una sottoscrizione attiva.

  • L'ultima versione dell'interfaccia della riga di comando di Azure. Per assicurarsi di eseguire la versione più recente, 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.

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"
VNET_NAME="my-custom-vnet"
SUBNET_NAME="my-custom-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"

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

Creare una rete virtuale

Un ambiente di App contenitore di Azure crea un limite sicuro intorno a un gruppo di app contenitore. Le app contenitore nello stesso ambiente vengono distribuite nella stessa rete virtuale e scrivono log nella stessa area di lavoro Log Analytics.

  1. Creare una rete virtuale di Azure da associare all'ambiente App contenitore. La rete virtuale deve avere una subnet disponibile per la distribuzione dell'ambiente. È possibile usare una rete virtuale esistente, ma gli endpoint privati sono supportati solo dagli ambienti dei profili di carico di lavoro, che richiedono una subnet con un intervallo CIDR minimo o /27 superiore. Per altre informazioni sul dimensionamento delle subnet, vedere la panoramica dell'architettura di networking.

    az network vnet create \
        --resource-group $RESOURCE_GROUP \
        --name $VNET_NAME \
        --location $LOCATION \
        --address-prefix 10.0.0.0/16
    
  2. Creare una subnet da associare alla rete virtuale e contenere l'endpoint privato.

    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 10.0.0.0/21
    
  3. Recuperare l'ID subnet. Questa operazione viene usata per creare l'endpoint privato.

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --query "id" \
        --output tsv)
    

Crea un ambiente

  1. Creare l'ambiente app contenitore usando la rete virtuale distribuita nei passaggi precedenti. Gli endpoint privati sono supportati solo dagli ambienti dei profili di carico di lavoro, ovvero il tipo predefinito per i nuovi ambienti.

    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. Questa operazione è necessaria per abilitare gli endpoint privati.

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

Creare un endpoint privato

Creare l'endpoint privato nell'ambiente e nella subnet creati in precedenza.

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

Configurare la zona DNS privato

  1. Recuperare l'indirizzo IP dell'endpoint privato. Questa operazione viene usata per aggiungere un record DNS alla zona DNS privata.

    PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \
        --name $PRIVATE_ENDPOINT \
        --resource-group $RESOURCE_GROUP \
        --query 'customDnsConfigs[0].ipAddresses[0]' \
        --output tsv)
    
  2. Recuperare il dominio predefinito dell'ambiente. Questa operazione viene usata per aggiungere un record DNS alla zona DNS privata.

    DNS_RECORD_NAME=$(az containerapp env show \
        --id $ENVIRONMENT_ID \
        --query 'properties.defaultDomain' \
        --output tsv | sed 's/\..*//')
    
  3. Creare una zona DNS privato.

    az network private-dns zone create \
        --resource-group $RESOURCE_GROUP \
        --name $PRIVATE_DNS_ZONE
    
  4. Creare un collegamento tra la rete virtuale e la zona DNS privata.

    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 false
    
  5. Aggiungere un record per l'endpoint privato alla zona DNS privata.

    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
    

Distribuire un'app contenitore

Distribuire un'app contenitore nell'ambiente. Questa app contenitore usa semplicemente l'immagine di avvio rapido.

Quando si passa all'endpoint dell'app contenitore, si riceve ERR_CONNECTION_CLOSED perché l'ambiente dell'app contenitore ha accesso pubblico disabilitato. È invece possibile accedere all'app contenitore usando l'endpoint privato.

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

Verificare la connessione all'endpoint privato

In questa sezione viene creata una macchina virtuale associata alla rete virtuale in modo da poter accedere all'app contenitore definita usando l'endpoint privato.

Creare una macchina virtuale (VM)

Iniziare accedendo al portale di Azure.

  1. Cercare Macchine virtuali nella barra di ricerca superiore.

  2. Selezionare Macchine virtuali nei risultati della ricerca.

  3. Selezionare Crea.

  4. Nella pagina Crea una macchina virtuale nella scheda Informazioni di base immettere i valori seguenti.

    Impostazione Azione
    Abbonamento Seleziona la tua sottoscrizione di Azure.
    Gruppo di risorse Selezionare my-container-apps.
    Virtual machine name Immettere azurevm.
    Paese Selezionare Stati Uniti centrali.
    Opzioni di disponibilità Selezionare La ridondanza dell'infrastruttura non è richiesta.
    Tipo di sicurezza Selezionare Standard.
    Image Selezionare Windows Server 2022 Datacenter : Azure Edition - x64 Gen2.
    Username digitare azureuser.
    Password Immettere una password.
    Conferma password Immettere di nuovo la password.
    Porte in ingresso pubbliche Selezionare Nessuno.
  5. Nella scheda Rete immettere i valori seguenti.

    Impostazione Azione
    Rete virtuale Selezionare my-private-endpoint-vnet.
    Subnet Selezionare my-private-endpoint-vnet-subnet (10.0.0.0/23).
    IP pubblico Selezionare Nessuno.
    Gruppo di sicurezza di rete della scheda di interfaccia di rete Seleziona Avanzate.
  6. Selezionare Rivedi e crea.

  7. Selezionare Crea.

Impostare le variabili di ambiente

Impostare le variabili di ambiente seguenti.

VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"

Creare una macchina virtuale (VM)

Esegui il comando seguente:

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

Dopo aver eseguito questo comando, viene richiesta una password di amministratore per la macchina virtuale.

Il nome utente dell'amministratore deve avere una lunghezza compresa tra 1 e 20 caratteri.

La password dell'amministratore ha i requisiti seguenti:

  • Deve avere una lunghezza compresa tra 12 e 123 caratteri.
  • Deve avere 3 dei caratteri seguenti: 1 carattere minuscolo, 1 carattere maiuscolo, 1 numero e 1 carattere speciale.

Testare la connessione

  1. Iniziare accedendo al portale di Azure.

  2. Cercare la macchina virtuale creata nella barra di ricerca superiore e selezionarla nei risultati della ricerca.

  3. Nella pagina Panoramica per la macchina virtuale selezionare Connetti, quindi selezionare Connetti tramite Bastion.

  4. Nella pagina Bastion selezionare Distribuisci Bastion.

  5. Impostare Nome utente e password della macchina virtuale sul nome utente e la password usati durante la creazione della macchina virtuale.

  6. Selezionare Connetti.

  7. Dopo la connessione, eseguire PowerShell nella macchina virtuale.

  8. In PowerShell eseguire il comando seguente. Sostituire i <SEGNAPOSTO> con i valori.

    nslookup <CONTAINER_APP_ENDPOINT>
    

    L'output è simile all'esempio seguente, con i valori che sostituiscono i <SEGNAPOSTO>.

    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>
    
  9. Aprire un browser nella macchina virtuale.

  10. Passare all'endpoint dell'app contenitore. Viene visualizzato l'output per l'immagine dell'app contenitore di avvio rapido.

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