Fornire una rete virtuale a un ambiente esterno App contenitore di Azure.

L'esempio seguente illustra come creare un ambiente App contenitore in una rete virtuale esistente.

Iniziare accedendo al portale di Azure.

Creare un'app contenitore

Per creare l'app contenitore, iniziare dalla home page del 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.

Scheda Informazioni di base

Nella scheda Dati principali eseguire le azioni seguenti.

  1. Immettere i valori seguenti nella sezione Dettagli progetto.

    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.

Crea un ambiente

Creare quindi un ambiente per l'app contenitore.

  1. Selezionare l'area appropriata.

    Impostazione Valore
    Paese Selezionare Stati Uniti centrali.
  2. Nel campo Crea ambiente app contenitore selezionare il collegamento Crea nuovo.

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

    Impostazione Valore
    Nome ambiente Immettere my-environment.
    Tipo di ambiente Selezionare Profili del carico di lavoro.
    Ridondanza della zona selezionare Disabilitato
  4. Selezionare la scheda Monitoraggio per creare un'area di lavoro Log Analytics.

  5. Selezionare Azure Log Analytics come Destinazione log.

  6. Selezionare il collegamento Crea nuovo nel campo Area di lavoro Log Analytics e immettere i valori seguenti.

    Impostazione valore
    Nome Immettere my-container-app-logs.

    Il campo Località viene precompilato con Stati Uniti centrali.

  7. Seleziona OK.

Nota

È possibile usare una rete virtuale esistente, ma è necessaria una subnet dedicata con un intervallo CIDR di /23 o superiore per l'uso con App contenitore quando si usa l'architettura Solo a consumo. Quando si usa un ambiente dei profili di carico di lavoro, è necessario un /27 o più grande. Per altre informazioni sul dimensionamento delle subnet, vedere la panoramica dell'architettura di networking.

  1. Selezionare la scheda Networking per creare una networking virtuale.

  2. Selezionare accanto a Usa la propria rete virtuale.

  3. Accanto alla casella Rete virtuale selezionare il link Crea nuovo e immettere il valore seguente.

    Impostazione valore
    Nome Immettere my-custom-vnet.
  4. Selezionare il pulsante OK.

  5. Accanto alla casella Subnet infrastruttura selezionare il link Crea nuovo e immettere i valori seguenti:

    Impostazione Valore
    Nome della subnet Immettere infrastruttura-subnet.
    Blocco di indirizzi della rete virtuale Mantenere il valore predefinito.
    Blocco di indirizzi della subnet Mantenere il valore predefinito.
  6. Selezionare il pulsante OK.

  7. In IP virtuale selezionare Esterno.

  8. Seleziona Crea.

Distribuire l'app contenitore

  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. Seleziona Crea.

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

Prerequisiti

Attrezzaggio

Per accedere ad Azure dall'interfaccia della riga di comando, eseguire il comando seguente e seguire le istruzioni per completare il processo di autenticazione.

az login

Assicurarsi di eseguire l'ultima versione dell'interfaccia della riga di comando eseguire il comando di aggiornamento.

az upgrade

Installare o aggiornare quindi l'estensione App contenitore di Azure per l'interfaccia della riga di comando.

Se si ricevono errori relativi ai parametri mancanti quando si eseguono comandi az containerapp nell'interfaccia della riga di comando di Azure o nei cmdlet del modulo Az.App in Azure PowerShell, assicurarsi di avere installato la versione più recente dell'estensione App contenitore di Azure.

az extension add --name containerapp --upgrade

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.

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

Ora che l'estensione o il modulo corrente è installato, registrare gli spazi dei nomi Microsoft.App e Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Impostare le variabili di ambiente

Impostare le variabili di ambiente seguenti. Sostituire i <SEGNAPOSTO> con i valori:

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

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

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.

Registrazione del provider Microsoft.ContainerService.

az provider register --namespace Microsoft.ContainerService

Dichiarare una variabile per contenere il nome della rete virtuale.

VNET_NAME="my-custom-vnet"

Creare ora una rete virtuale di Azure da associare all'ambiente App contenitore. La rete virtuale deve avere una subnet disponibile per la distribuzione dell'ambiente.

Nota

Il prefisso dell'indirizzo della subnet di rete richiede un intervallo CIDR minimo /23 per l'uso con le app contenitore quando si usa l'architettura Solo a consumo. Quando si usa l'architettura Profili di carico di lavoro, è necessario un /27 o più grande. 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
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --address-prefixes 10.0.0.0/21

Quando si usa l'ambiente dei profili del carico di lavoro, è necessario aggiornare la rete virtuale per delegare la subnet a Microsoft.App/environments. Questa delega non è applicabile all'ambiente solo a consumo.

az network vnet subnet update \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --delegations Microsoft.App/environments

Dopo aver creato la rete virtuale, è possibile recuperare l'ID per la subnet dell'infrastruttura.

INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`

Creare infine l'ambiente app contenitore usando la rete virtuale personalizzata distribuita nei passaggi precedenti.

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET

Nella tabella seguente vengono descritti i parametri usati in containerapp env create.

Parametro Descrizione
name Nome dell'ambiente App contenitore.
resource-group Nome del gruppo di risorse.
location Posizione di Azure in cui deve essere distribuito l'ambiente.
infrastructure-subnet-resource-id ID risorsa di una subnet per i componenti dell'infrastruttura e i contenitori di applicazioni utente.

Dopo aver creato l'ambiente usando una rete virtuale personalizzata, è ora possibile distribuire le app contenitore nell'ambiente.

Configurazione facoltativa

È possibile distribuire un DNS privato e definire intervalli IP di networking personalizzati per l'ambiente app contenitore.

Eseguire la distribuzione con un DNS privato

Se si desidera distribuire l'app contenitore con un DNS privato, eseguire i comandi seguenti.

Prima di tutto, estrarre informazioni identificabili dall'ambiente.

ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`

Configurare quindi il DNS privato.

az network private-dns zone create \
  --resource-group $RESOURCE_GROUP \
  --name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --virtual-network $VNET_ID \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
  --resource-group $RESOURCE_GROUP \
  --record-set-name "*" \
  --ipv4-address $ENVIRONMENT_STATIC_IP \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN

Parametri di networking

Esistono tre parametri di networking facoltativi che è possibile scegliere di definire quando si chiama containerapp env create. Usare queste opzioni quando si dispone di una rete virtuale con peering con intervalli di indirizzi separati. La configurazione esplicita di questi intervalli garantisce che gli indirizzi usati dall'ambiente App contenitore non siano in conflitto con altri intervalli nell'infrastruttura di rete.

È necessario specificare i valori per tutte e tre queste proprietà o nessuna di esse. Se non vengono forniti, i valori vengono generati automaticamente.

Parametro Descrizione
platform-reserved-cidr Intervallo di indirizzi usato internamente per i servizi dell'infrastruttura dell'ambiente. Deve avere una dimensione compresa tra /23 e /12 quando si usa l'architettura Solo consumo
platform-reserved-dns-ip Indirizzo IP dall'intervallo platform-reserved-cidr usato per il server DNS interno. L'indirizzo non può essere il primo indirizzo nell'intervallo o l'indirizzo di rete. Ad esempio, se platform-reserved-cidr è impostato su 10.2.0.0/16, platform-reserved-dns-ip non può essere 10.2.0.0 (l'indirizzo di rete) o 10.2.0.1 (l'infrastruttura riserva l'uso di questo IP). In questo caso, il primo indirizzo IP utilizzabile per il DNS sarebbe 10.2.0.2.
docker-bridge-cidr Intervallo di indirizzi assegnato alla rete bridge Docker. Questo intervallo deve avere una dimensione compresa tra /28 e /12.
  • Gli intervalli di indirizzi platform-reserved-cidr e docker-bridge-cidr non possono entrare in conflitto tra loro o con gli intervalli di una subnet specificata. Assicurarsi inoltre che questi intervalli non siano in conflitto con altri intervalli di indirizzi nella rete virtuale.

  • Se queste proprietà non vengono specificate, l'interfaccia della riga di comando genera automaticamente i valori di intervallo in base all'intervallo di indirizzi della rete virtuale per evitare conflitti di intervallo.

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

Passaggi successivi