Ejercicio: uso de volúmenes de datos

Completado

De forma predeterminada, Azure Container Instances no tiene estado. Si el contenedor se bloquea o se detiene, se pierde todo su estado. Para conservar el estado más allá de la vigencia del contenedor, debe montar un volumen desde un almacén externo.

Monte un recurso compartido de archivos de Azure en una instancia de contenedor de Azure para poder almacenar datos y acceder a ellos más adelante.

Creación de un recurso compartido de archivos de Azure

Cree una cuenta de almacenamiento y un recurso compartido de archivos. Posteriormente, se puede hacer que una instancia de contenedor de Azure acceda a este recurso.

  1. La cuenta de almacenamiento necesita un nombre único. Con fines de aprendizaje, ejecute este comando para almacenar un nombre único en una variable de Bash:

    STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
    
  2. Ejecute el siguiente comando az storage account create para crear la cuenta de almacenamiento:

    az storage account create \
      --resource-group learn-deploy-aci-rg \
      --name $STORAGE_ACCOUNT_NAME \
      --sku Standard_LRS \
      --location eastus
    
  3. Ejecute el siguiente comando para colocar la cadena de conexión de la cuenta de almacenamiento en una variable de entorno denominada 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 es una variable de entorno especial que la CLI de Azure comprende. El elemento export permite que otros comandos CLI que se ejecutan después accedan a la variable.

  4. Ejecute este comando para crear un recurso compartido de archivos denominado aci-share-demo en la cuenta de almacenamiento:

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

Obtención de credenciales de almacenamiento

Para montar un recurso compartido de archivos de Azure como un volumen en Azure Container Instances, necesita estos tres valores:

  • Nombre de la cuenta de almacenamiento
  • Nombre del recurso compartido
  • Clave de acceso de cuenta de almacenamiento

Ya tiene los dos primeros valores. El nombre de cuenta de almacenamiento se almacena en la variable de Bash STORAGE_ACCOUNT_NAME. Se especificó aci-share-demo como el nombre del recurso compartido en el paso anterior. Aquí obtendrá el valor que falta: la clave de acceso de la cuenta de almacenamiento.

  1. Ejecute el siguiente comando para obtener la clave de la cuenta de almacenamiento:

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

    El resultado se almacena en una variable de Bash llamada STORAGE_KEY.

  2. Como paso opcional, imprima el nombre de la clave de almacenamiento en la consola.

    echo $STORAGE_KEY
    

Implementación de un contenedor y montaje del recurso compartido de archivos

Para montar un recurso compartido de archivos de Azure como volumen en un contenedor, especifique el recurso compartido y el punto de montaje del volumen al crear el contenedor.

  1. Ejecute este comando az container create para crear un contenedor que monte /aci/logs/ en el recurso compartido de archivos:

    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. Ejecute az container show para obtener la dirección IP pública de su contenedor:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --query ipAddress.ip \
      --output tsv
    
  3. Desde un explorador, vaya a la dirección IP de su contenedor. Aparece esta página:

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

  4. Escriba cualquier texto en el formulario y seleccione Enviar. Esta acción crea un archivo que contiene el texto que escribió en el recurso compartido de archivos de Azure.

  5. Ejecute este comando az storage file list para mostrar los archivos que se encuentran en el recurso compartido de archivos:

    az storage file list -s aci-share-demo -o table
    
  6. Ejecute az storage file download para descargar un archivo en la sesión de Cloud Shell. Reemplace <filename> por uno de los archivos que aparecían en el paso anterior.

    az storage file download -s aci-share-demo -p <filename>
    
  7. Ejecute el comando cat para imprimir el contenido del archivo.

    cat <filename>
    

Recuerde que los datos se conservan cuando se cierra el contenedor. Puede montar el recurso compartido de archivos en otras instancias de contenedor para hacer que los datos estén disponibles.