Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Impara a scrivere su archiviazione permanente in un'app contenitore utilizzando un punto di montaggio di File di Azure. Per altre informazioni sui montaggi di archiviazione, vedere Usare i montaggi di archiviazione in App Azure Container.
Questo tutorial utilizza l'autenticazione dell'identità gestita (preview), che raccomandiamo per i nuovi montaggi SMB. L'identità gestita appartiene all'ambiente Container Apps. Non è necessario recuperare, conservare o rinnovare una chiave dell'account di archiviazione per montare la condivisione file.
In questa esercitazione si apprenderà come:
- Creare un ambiente Container Apps
- Creare un account di archiviazione di Azure
- Definire una condivisione file nell'account di archiviazione
- Concedere all'identità gestita dell'ambiente l'accesso alla condivisione file
- Collegare l'ambiente alla condivisione file di archiviazione
- Montare la condivisione di archiviazione in un singolo contenitore
- Verificare il montaggio dell'archivio visualizzando il registro di accesso al sito web
Annotazioni
App contenitore di Azure 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 ulteriori informazioni sul montaggio di condivisioni NFS, vedere Usare i montaggi di archiviazione in App contenitore di Azure.
Prerequisiti
- Installare la versione più recente dell'interfaccia della riga di comando di Azure.
- Usa un abbonamento Azure con autorizzazioni per creare risorse e assegnare ruoli del controllo degli accessi in base al ruolo di Azure (Azure RBAC). Per assegnare ruoli, serve l'autorizzazione
Microsoft.Authorization/roleAssignments/writenell'ambito dell'account di archiviazione.
Configurare l'ambiente
I comandi seguenti definiscono le variabili di ambiente e assicurano che l'estensione App di contenitore sia aggiornata.
Accedi all'interfaccia della riga di comando di Azure.
az loginConfigurare le variabili di ambiente usate in vari comandi da seguire.
RESOURCE_GROUP="my-container-apps-group" ENVIRONMENT_NAME="my-storage-environment" LOCATION="canadacentral"Assicurati di avere l'ultima versione dell'estensione di interfaccia della riga di comando di Azure per le app container.
az extension add -n containerapp --upgradeRegistrare lo spazio dei nomi
Microsoft.App.az provider register --namespace Microsoft.AppRegistrare il provider
Microsoft.OperationalInsightsper l'area di lavoro di Monitoraggio di Azure Log Analytics, se non è stato usato in precedenza.az provider register --namespace Microsoft.OperationalInsights
Crea un ambiente
La procedura seguente consente di creare un gruppo di risorse e un ambiente app contenitore.
Creare 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.
Crea un ambiente App Container.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --mi-system-assigned \ --query "properties.provisioningState"Dopo la creazione, il comando restituisce un messaggio "Succeeded".
Usa il flag
--mi-system-assignedper abilitare l'identità gestita assegnata dal sistema dell'ambiente. Nei passaggi successivi, concedi a questa identità l'accesso alla condivisione file.I montaggi di archiviazione sono associati a un ambiente app contenitore e configurati all'interno di singole app contenitore.
Impostare un account di archiviazione
Creare quindi un account di archiviazione e stabilire una condivisione file da montare nell'app contenitore.
Definire il nome di un account storage.
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 \ --enable-smb-oauth true \ --query provisioningStateDopo la creazione, il comando restituisce un messaggio "Succeeded".
Il
--enable-smb-oauth trueflag abilita l'Identità Gestita per SMB (SMBOAuth) sull'account storage. Se usi un account di storage esistente, attiva questa impostazione prima di creare il mount. Per le istruzioni, vedi Configura la proprietà di accesso dell'identità gestita sul tuo account di archiviazione.Le impostazioni di sicurezza SMB dell'account di archiviazione devono consentire anche l'autenticazione Kerberos. Se usi un profilo di sicurezza personalizzato per SMB, consulta le impostazioni di sicurezza SMB.
Definire un nome di condivisione file.
STORAGE_SHARE_NAME="myfileshare"Creare la condivisione di file nello spazio di Archiviazione 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 tableDefinire il nome del montaggio di archiviazione.
STORAGE_MOUNT_NAME="mystoragemount"Questo valore è il nome usato per definire il collegamento di montaggio dello storage dall'ambiente Container Apps al tuo account di Archiviazione di Azure.
Concedere l'accesso all'identità gestita
Assegna il ruolo Storage File Data SMB MI Admin all'identità gestita dell'ambiente nell'ambito dell'account di archiviazione. Questo ruolo autorizza l'identità ad accedere a file e directory nella condivisione SMB.
ENVIRONMENT_PRINCIPAL_ID=$(az containerapp env show \
--name $ENVIRONMENT_NAME \
--resource-group $RESOURCE_GROUP \
--query identity.principalId \
--output tsv)
STORAGE_ACCOUNT_ID=$(az storage account show \
--name $STORAGE_ACCOUNT_NAME \
--resource-group $RESOURCE_GROUP \
--query id \
--output tsv)
az role assignment create \
--assignee-object-id "$ENVIRONMENT_PRINCIPAL_ID" \
--assignee-principal-type ServicePrincipal \
--role "Storage File Data SMB MI Admin" \
--scope "$STORAGE_ACCOUNT_ID"
Attendere che l'assegnazione del ruolo si propaghi prima di creare il montaggio dell'archiviazione. Per assegnare il ruolo nel portale Azure, vedi Assegna un ruolo RBAC integrato all'identità gestita.
Creare il punto di montaggio dello storage
Ora puoi modificare la configurazione dell'app contenitore per supportare il montaggio della memoria.
Crea un collegamento di archiviazione nell'ambiente.
az containerapp env storage set \ --access-mode ReadWrite \ --storage-type AzureFile \ --azure-file-account-name $STORAGE_ACCOUNT_NAME \ --azure-file-identity system \ --azure-file-share-name $STORAGE_SHARE_NAME \ --storage-name $STORAGE_MOUNT_NAME \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --output tableQuesto comando crea un collegamento tra l'ambiente Container Apps e la condivisione file creata con il
az storage share-rmcomando. L'opzione--azure-file-identity systemconsente l'autenticazione ad File di Azure utilizzando l'identità gestita assegnata dal sistema dell'ambiente.Per un'identità gestita assegnata dall'utente, assegna l'identità all'ambiente e usa il suo ID di risorsa completo invece di
system. L'autenticazione della chiave dell'account di archiviazione rimane supportata come alternativa. Non combinare--azure-file-identitycon--azure-file-account-keyo--azure-file-key-vault-secret-url. Per esempi, vedi Usa i mount di archiviazione in App contenitore di Azure.Ora che l'account di archiviazione e l'ambiente sono collegati, è possibile creare un'applicazione container che utilizza il punto di montaggio dello storage.
Definire il nome dell'app contenitore.
CONTAINER_APP_NAME="my-container-app"Crea 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.fqdnQuesto 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. Tornerai al sito web durante i passaggi di verifica del montaggio della memoria.
Dopo aver verificato che l'app contenitore è configurata, è possibile aggiornare l'app con una definizione di punto di montaggio storage.
Esportare la configurazione dell'app container.
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --output yaml > app.yamlAnnotazioni
Anche se questa applicazione non ha segreti, molte app presentano segreti. 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
secretssezione e i segreti rimangono invariati. In alternativa, se è necessario modificare il valore di un segreto, assicurarsi di specificare sia ilnamechevalueper tutti i segreti nel file prima di tentare di aggiornare l'app. L'omissione di un segreto dallasecretssezione elimina il segreto.Aprire app.yaml in un editor di codice.
Sostituire la
volumes: nulldefinizione nellatemplatesezione con unavolumes:definizione che fa riferimento al volume di archiviazione. La sezione del modello dovrebbe essere simile alla seguente:template: containers: - image: nginx imageType: ContainerImage name: my-container-app resources: cpu: 0.5 ephemeralStorage: 2Gi memory: 1Gi volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx initContainers: null revisionSuffix: '' scale: cooldownPeriod: 300 maxReplicas: 1 minReplicas: 1 pollingInterval: 30 rules: null serviceBinds: null terminationGracePeriodSeconds: null volumes: - name: my-azure-file-volume storageName: mystoragemount storageType: AzureFileLa nuova
template.volumessezione include le proprietà seguenti.Proprietà Descrizione nameQuesto valore identifica il volume a livello di app ed è referenziato da volumeNamenel montaggio del volume del container.storageNameQuesto valore corrisponde al nome della definizione di memoria creato chiamando il az containerapp env storage setcomando.storageTypeQuesto valore determina il tipo di volume di archiviazione definito per l'ambiente. In questo caso, viene dichiarato un montaggio di File di Azure. La sezione
volumesdefinisce i volumi a livello di applicazione a cui il contenitore dell'applicazione o i contenitori sidecar possono fare riferimento tramite la sezionevolumeMountsassociata a un contenitore.L'autenticazione dell'identità gestita non cambia la configurazione dei volumi a livello di app. Continua a usarlo
storageType: AzureFileper mount SMB.Aggiungi una sezione
volumeMountsal contenitorenginxnella sezionecontainers.containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginxLa nuova
volumeMountssezione include le proprietà seguenti:Proprietà Descrizione volumeNameQuesto valore deve corrispondere al nome definito nella volumesdefinizione.mountPathQuesto valore definisce il percorso nel contenitore in cui è montata l'archiviazione. Aggiorna l'applicazione contenitore con la nuova configurazione di montaggio dello storage.
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --yaml app.yaml \ --output table
Verificare il montaggio dello spazio di archiviazione
Ora che il mount di archiviazione è stabilito, è possibile modificare i file in Archiviazione di Azure dal proprio container. Usare i comandi seguenti per osservare il montaggio di archiviazione sul luogo di lavoro.
Apri una shell interattiva all'interno dell'applicazione contenitore per eseguire comandi all'interno del contenitore attivo.
az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUPQuesto comando può richiedere qualche minuto per aprire la shell remota. Quando la shell è pronta, è possibile interagire con il punto di montaggio della memoria tramite i comandi del file system. Per altre informazioni, vedere Connettersi a una console del contenitore in App Azure Container.
Passare alla cartella nginx /var/log/nginx .
cd /var/log/nginxTornare 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/nginxcartella.lsSi noti come i file access.log e error.log vengono visualizzati in questa cartella. Questi file vengono scritti sul punto di montaggio di File di Azure nella condivisione di archiviazione su Azure creata nei passaggi precedenti.
Visualizzare il contenuto del file di access.log .
cat access.logEsci 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 di archiviazione di Azure. Stampa il nome dell'account di archiviazione generato in modo casuale.
echo $STORAGE_ACCOUNT_NAMEPassare al portale di Azure e aprire l'account di archiviazione creato in questa procedura.
In Archiviazione dati selezionare Condivisioni file.
Seleziona myfileshare per visualizzare i file access.log e file 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