Condividi tramite


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

Configurare l'ambiente

I comandi seguenti consentono di definire le variabili e assicurarsi che l'estensione App contenitore sia aggiornata.

  1. Accedere all'interfaccia della riga di comando di Azure.

    az login
    
  2. Configurare le variabili di ambiente usate in vari comandi da seguire.

    RESOURCE_GROUP="my-container-apps-group"
    ENVIRONMENT_NAME="my-storage-environment"
    LOCATION="canadacentral"
    
  3. 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
    
  4. Registrare lo spazio dei nomi Microsoft.App.

    az provider register --namespace Microsoft.App
    
  5. 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.

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

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

  1. 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"
    
  2. 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".

  3. Definire un nome di condivisione file.

    STORAGE_SHARE_NAME="myfileshare"
    
  4. 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
    
  5. 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.

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

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

  2. Definire il nome dell'app contenitore.

    CONTAINER_APP_NAME="my-container-app"
    
  3. 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.

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

  5. 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 il name che value per tutti i segreti nel file prima di tentare di aggiornare l'app. L'omissione di un segreto dalla secrets sezione elimina il segreto.

  6. Aprire app.yaml in un editor di codice.

  7. Sostituire la volumes: null definizione nella template sezione con una volumes: 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 una volumeMounts sezione associata a un contenitore.

  8. Aggiungere una volumeMounts sezione al nginx contenitore nella containers 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.
  9. 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.

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

  2. Passare alla cartella nginx /var/log/nginx .

    cd /var/log/nginx
    
  3. 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.

  4. Tornare al terminale ed elencare i valori della /var/log/nginx cartella.

    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.

  5. Visualizzare il contenuto del file access.log .

    cat access.log
    
  6. Uscire dalla shell interattiva del contenitore per tornare alla sessione del terminale locale.

    exit
    
  7. È 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
    
  8. Passare alla portale di Azure e aprire l'account di archiviazione creato in questa procedura.

  9. In Data Archiviazione selezionare Condivisioni file.

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

Passaggi successivi