Ejercicio: uso de volúmenes de datos

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.

Aquí, montará 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

Aquí creará una cuenta de almacenamiento y un recurso compartido de archivos que más adelante modificará para que sea accesible para una instancia de contenedor de Azure.

  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 este 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 este 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 hace que esta variable sea accesible a otros comandos CLI que ejecutará en breve.

  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 la 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 restante: la clave de acceso de la cuenta de almacenamiento.

  1. Ejecute este 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 monta /aci/logs/ en el recurso compartido de archivos.

    az container create \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-files \
      --image microsoft/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. Verá esto.

    Demo de recurso compartido de archivos de Azure Container Instances

  4. Escriba cualquier texto en el formulario y haga clic en 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 <nombre de archivo> 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.