Esercizio - Usare volumi di dati

Completato

Per impostazione predefinita, Istanze di Azure Container è senza stato. Se il contenitore si blocca o si arresta, lo stato viene perso. Per rendere persistente lo stato oltre la durata del contenitore, è necessario montare un volume da un archivio esterno.

Montare una condivisione file di Azure in un'istanza di contenitore di Azure in cui sarà possibile archiviare i dati e che sarà accessibile in un secondo momento.

Creare una condivisione file di Azure

Creare un account di archiviazione con la condivisione file. Successivamente, è possibile rendere accessibile la condivisione file a un'istanza del contenitore di Azure.

  1. L'account di archiviazione richiede un nome univoco. Ai fini dell'apprendimento, eseguire il comando seguente per archiviare un nome univoco in una variabile Bash:

    STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
    
  2. Eseguire il comando seguente az storage account create per creare l'account di archiviazione:

    az storage account create \
      --resource-group learn-deploy-aci-rg \
      --name $STORAGE_ACCOUNT_NAME \
      --sku Standard_LRS \
      --location eastus
    
  3. Eseguire il comando seguente per inserire la stringa di connessione dell'account di archiviazione in una variabile di ambiente denominata AZURE_STORAGE_CONNECTION_STRING:

    export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string \
      --resource-group learn-deploy-aci-rg \
      --name $STORAGE_ACCOUNT_NAME \
      --output tsv)
    

    AZURE_STORAGE_CONNECTION_STRING è una variabile di ambiente speciale che l'interfaccia della riga di comando di Azure riconosce. La parte export rende questa variabile accessibile agli altri comandi dell'interfaccia della riga di comando che si eseguiranno a breve.

  4. Eseguire questo comando per creare una condivisione file, denominata aci-share-demo, nell'account di archiviazione:

    az storage share create --name aci-share-demo
    

Ottenere le credenziali di archiviazione

Per montare una condivisione file di Azure come volume in Istanze di Azure Container, sono necessari questi tre valori:

  • Nome account di archiviazione
  • Nome condivisione
  • Chiave di accesso dell'account di archiviazione

I primi due valori sono già disponibili. Il nome dell'account di archiviazione è archiviato nella variabile Bash STORAGE_ACCOUNT_NAME. È stato specificato il nome condivisione aci-share-demo nel passaggio precedente. Qui si vedrà come ottenere il valore rimanente, ovvero la chiave di accesso dell'account di archiviazione.

  1. Eseguire il comando seguente per ottenere la chiave dell'account di archiviazione:

    STORAGE_KEY=$(az storage account keys list \
      --resource-group learn-deploy-aci-rg \
      --account-name $STORAGE_ACCOUNT_NAME \
      --query "[0].value" \
      --output tsv)
    

    Il risultato viene archiviato in una variabile Bash denominata STORAGE_KEY.

  2. Come passaggio facoltativo, stampare la chiave dell'account di archiviazione nella console.

    echo $STORAGE_KEY
    

Distribuire un contenitore e montare la condivisione file

Per montare una condivisione file di Azure come un volume all'interno di un contenitore, specificare il punto di montaggio della condivisione e del volume quando si crea il contenitore.

  1. Eseguire questo comando az container create per creare un contenitore che monti /aci/logs/ nella condivisione file:

    az container create \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --image mcr.microsoft.com/azuredocs/aci-hellofiles \
      --location eastus \
      --ports 80 \
      --ip-address Public \
      --azure-file-volume-account-name $STORAGE_ACCOUNT_NAME \
      --azure-file-volume-account-key $STORAGE_KEY \
      --azure-file-volume-share-name aci-share-demo \
      --azure-file-volume-mount-path /aci/logs/
    
  2. Eseguire az container show per ottenere l'indirizzo IP pubblico del contenitore:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --query ipAddress.ip \
      --output tsv
    
  3. Da un browser passare all'indirizzo IP del contenitore. Si ottiene questa pagina:

    Screenshot of the Azure Container Instances file share demo running in a browser.

  4. Immettere il testo nel modulo e selezionare Invia. Questa azione crea un file contenete il testo immesso nella condivisione file di Azure.

  5. Eseguire questo comando az storage file list per visualizzare i file contenuti nella condivisione file:

    az storage file list -s aci-share-demo -o table
    
  6. Eseguire az storage file download per scaricare un file nella sessione di Cloud Shell. Sostituire <filename> con uno dei file visualizzati nel passaggio precedente:

    az storage file download -s aci-share-demo -p <filename>
    
  7. Eseguire il comando cat per elencare il contenuto del file.

    cat <filename>
    

Tenere presente che i dati vengono mantenuti alla chiusura del contenitore. È possibile montare la condivisione file in altre istanze di contenitore per rendere disponibili questi dati.