Esercitazione: Creare un montaggio di volumi File di Azure in App Azure Container
Informazioni su come scrivere in una risorsa di archiviazione permanente in un'app contenitore usando un montaggio di archiviazione File di Azure. Per altre informazioni sui montaggi di archiviazione, vedere Usare i montaggi di archiviazione in App Azure Container.
In questa esercitazione apprenderai a:
- Creare un ambiente app contenitore
- Creare un account di Archiviazione di Azure
- Definire una condivisione file nell'account di archiviazione
- Collegare l'ambiente alla condivisione file di archiviazione
- Montare la condivisione di archiviazione in un singolo contenitore
- Verificare il montaggio dell'archiviazione visualizzando il log di accesso al sito Web
Nota
App Azure Container supporta il montaggio di condivisioni file usando protocolli SMB e NFS. Questa esercitazione illustra il montaggio di una condivisione File di Azure usando il protocollo SMB. Per altre informazioni sul montaggio di condivisioni NFS, vedere Usare i montaggi di archiviazione in App Azure Container.
Prerequisiti
- Installare la versione più recente dell'interfaccia della riga di comando di Azure.
Configurare l'ambiente
I comandi seguenti consentono di definire le variabili e assicurarsi che l'estensione App contenitore sia aggiornata.
Accedere all'interfaccia della riga di comando di Azure.
az login
Configurare le variabili di ambiente usate in vari comandi da seguire.
RESOURCE_GROUP="my-container-apps-group" ENVIRONMENT_NAME="my-storage-environment" LOCATION="canadacentral"
Assicurarsi di avere la versione più recente dell'estensione dell'interfaccia della riga di comando di Azure per app contenitore.
az extension add -n containerapp --upgrade
Registrare lo spazio dei nomi
Microsoft.App
.az provider register --namespace Microsoft.App
Registrare il provider
Microsoft.OperationalInsights
per l'area di lavoro Log Analytics di Monitoraggio di Azure se non è stata usata prima.az provider register --namespace Microsoft.OperationalInsights
Crea un ambiente
La procedura seguente consente di creare un gruppo di risorse e un ambiente app contenitore.
Crea un gruppo di risorse.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
Dopo la creazione, il comando restituisce un messaggio "Succeeded".
Alla fine di questa esercitazione, è possibile eliminare il gruppo di risorse per rimuovere tutti i servizi creati durante questo articolo.
Creare un ambiente app contenitore.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --query "properties.provisioningState"
Dopo la creazione, il comando restituisce un messaggio "Succeeded".
Archiviazione i montaggi sono associati a un ambiente App contenitore e configurati all'interno di singole app contenitore.
Configurare un account di archiviazione
Creare quindi un account di archiviazione e stabilire una condivisione file da montare nell'app contenitore.
Definire un nome di account di archiviazione.
Questo comando genera un suffisso casuale al nome dell'account di archiviazione per garantire l'univocità.
STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
Creare un account di archiviazione di Azure.
az storage account create \ --resource-group $RESOURCE_GROUP \ --name $STORAGE_ACCOUNT_NAME \ --location "$LOCATION" \ --kind StorageV2 \ --sku Standard_LRS \ --enable-large-file-share \ --query provisioningState
Dopo la creazione, il comando restituisce un messaggio "Succeeded".
Definire un nome di condivisione file.
STORAGE_SHARE_NAME="myfileshare"
Creare la condivisione file Archiviazione di Azure.
az storage share-rm create \ --resource-group $RESOURCE_GROUP \ --storage-account $STORAGE_ACCOUNT_NAME \ --name $STORAGE_SHARE_NAME \ --quota 1024 \ --enabled-protocols SMB \ --output table
Ottenere la chiave dell'account di archiviazione.
STORAGE_ACCOUNT_KEY=`az storage account keys list -n $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv`
La chiave dell'account di archiviazione è necessaria per creare il collegamento di archiviazione nell'ambiente App contenitore.
Definire il nome del montaggio di archiviazione.
STORAGE_MOUNT_NAME="mystoragemount"
Questo valore è il nome usato per definire il collegamento di montaggio dell'archiviazione dall'ambiente App contenitore all'account Archiviazione di Azure.
Creare il montaggio di archiviazione
È ora possibile aggiornare la configurazione dell'app contenitore per supportare il montaggio dell'archiviazione.
Creare il collegamento di archiviazione nell'ambiente.
az containerapp env storage set \ --access-mode ReadWrite \ --azure-file-account-name $STORAGE_ACCOUNT_NAME \ --azure-file-account-key $STORAGE_ACCOUNT_KEY \ --azure-file-share-name $STORAGE_SHARE_NAME \ --storage-name $STORAGE_MOUNT_NAME \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --output table
Questo comando crea un collegamento tra l'ambiente dell'app contenitore e la condivisione file creata con il
az storage share-rm
comando .Ora che l'account di archiviazione e l'ambiente sono collegati, è possibile creare un'app contenitore che usa il montaggio di archiviazione.
Definire il nome dell'app contenitore.
CONTAINER_APP_NAME="my-container-app"
Creare l'app contenitore.
az containerapp create \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT_NAME \ --image nginx \ --min-replicas 1 \ --max-replicas 1 \ --target-port 80 \ --ingress external \ --query properties.configuration.ingress.fqdn
Questo comando visualizza l'URL della nuova app contenitore.
Copiare l'URL e incollarlo nel Web browser per passare al sito Web.
Una volta caricata la pagina, verrà visualizzato il messaggio "Benvenuto in nginx!". Mantenere aperta la scheda del browser. Si tornerà al sito Web durante i passaggi di verifica del montaggio dell'archiviazione.
Dopo aver verificato che l'app contenitore è configurata, è possibile aggiornare l'app a con una definizione di montaggio di archiviazione.
Esportare la configurazione dell'app contenitore.
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --output yaml > app.yaml
Nota
Anche se questa applicazione non dispone di segreti, molte app eseguono segreti delle funzionalità. Per impostazione predefinita, quando si esporta la configurazione di un'app, i valori per i segreti non sono inclusi nel file YAML generato.
Se non è necessario modificare i valori dei segreti, è possibile rimuovere la
secrets
sezione e i segreti rimangono invariati. In alternativa, se è necessario modificare il valore di un segreto, assicurarsi di specificare sia ilname
chevalue
per tutti i segreti nel file prima di tentare di aggiornare l'app. L'omissione di un segreto dallasecrets
sezione elimina il segreto.Aprire app.yaml in un editor di codice.
Sostituire la
volumes: null
definizione nellatemplate
sezione con unavolumes:
definizione che fa riferimento al volume di archiviazione. La sezione del modello dovrebbe essere simile alla seguente:template: volumes: - name: my-azure-file-volume storageName: mystoragemount storageType: AzureFile containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx resources: cpu: 0.5 ephemeralStorage: 3Gi memory: 1Gi initContainers: null revisionSuffix: '' scale: maxReplicas: 1 minReplicas: 1 rules: null
La nuova
template.volumes
sezione include le proprietà seguenti.Proprietà Descrizione name
Questo valore corrisponde al volume creato chiamando il az containerapp env storage set
comando .storageName
Questo valore definisce il nome usato dai contenitori nell'ambiente per accedere al volume di archiviazione. storageType
Questo valore determina il tipo di volume di archiviazione definito per l'ambiente. In questo caso, viene dichiarato un montaggio File di Azure. La
volumes
sezione definisce i volumi a livello di app a cui il contenitore dell'applicazione o i contenitori sidecar possono fare riferimento tramite unavolumeMounts
sezione associata a un contenitore.Aggiungere una
volumeMounts
sezione alnginx
contenitore nellacontainers
sezione .containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx
La nuova
volumeMounts
sezione include le proprietà seguenti:Proprietà Descrizione volumeName
Questo valore deve corrispondere al nome definito nella volumes
definizione.mountPath
Questo valore definisce il percorso nel contenitore in cui è montata l'archiviazione. Aggiornare l'app contenitore con la nuova configurazione di montaggio dell'archiviazione.
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --yaml app.yaml \ --output table
Verificare il montaggio dell'archiviazione
Dopo aver stabilito il montaggio di archiviazione, è possibile modificare i file in Archiviazione di Azure dal contenitore. Usare i comandi seguenti per osservare il montaggio di archiviazione sul luogo di lavoro.
Aprire una shell interattiva all'interno dell'app contenitore per eseguire comandi all'interno del contenitore in esecuzione.
az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP
Questo comando può richiedere qualche minuto per aprire la shell remota. Quando la shell è pronta, è possibile interagire con il montaggio dell'archiviazione tramite i comandi del file system.
Passare alla cartella nginx /var/log/nginx .
cd /var/log/nginx
Tornare al browser e passare al sito Web e aggiornare la pagina alcune volte.
Le richieste effettuate al sito Web creano una serie di voci del flusso di log.
Tornare al terminale ed elencare i valori della
/var/log/nginx
cartella.ls
Si noti che i file access.log e error.log vengono visualizzati in questa cartella. Questi file vengono scritti nel montaggio File di Azure nella condivisione Archiviazione di Azure creata nei passaggi precedenti.
Visualizzare il contenuto del file access.log .
cat access.log
Uscire dalla shell interattiva del contenitore per tornare alla sessione del terminale locale.
exit
È ora possibile visualizzare i file nel portale di Azure per verificare che esistano nell'account Archiviazione di Azure. Stampare il nome dell'account di archiviazione generato in modo casuale.
echo $STORAGE_ACCOUNT_NAME
Passare alla portale di Azure e aprire l'account di archiviazione creato in questa procedura.
In Data Archiviazione selezionare Condivisioni file.
Selezionare myshare per visualizzare i file access.log e error.log.
Pulire le risorse
Se non si intende continuare a usare questa applicazione, eseguire il comando seguente per eliminare il gruppo di risorse insieme a tutte le risorse create in questo articolo.
az group delete \
--name $RESOURCE_GROUP