Tutorial: cómo crear un montaje de volumen Azure Files en Azure Container Apps

Aprenda a escribir en almacenamiento permanente en una aplicación de contenedor mediante un montaje de almacenamiento Azure Files. Para obtener más información sobre los volúmenes de almacenamiento, consulte Uso de montajes de almacenamiento en Azure Container Apps.

En este tutorial, aprenderá a:

  • Creación de un entorno de Container Apps
  • Creación de una cuenta de Azure Storage
  • Definir un recurso compartido de archivos en la cuenta de almacenamiento
  • Vincular el entorno al recurso compartido de archivos de almacenamiento
  • Montar el recurso compartido de almacenamiento en un contenedor individual
  • Comprobar el montaje del almacenamiento mediante la visualización del registro de acceso al sitio web.

Nota:

Azure Container Apps admite el montaje de recursos compartidos de archivos mediante protocolos SMB y NFS. En este tutorial se muestra cómo montar un recurso compartido de Azure Files mediante el protocolo SMB. Para más información sobre el montaje de recursos compartidos NFS, consulte Uso de montajes de almacenamiento en Azure Container Apps.

Requisitos previos

Configuración del entorno

Los siguientes comandos le ayudan a definir variables y a asegurarse de que la extensión Container Apps está actualizada.

  1. Inicie sesión en la CLI de Azure.

    az login
    
  2. Configure las variables de entorno que se usan en varios comandos que se deben seguir.

    RESOURCE_GROUP="my-container-apps-group"
    ENVIRONMENT_NAME="my-storage-environment"
    LOCATION="canadacentral"
    
  3. Asegúrese de que tiene la versión más reciente de la extensión de la CLI de Azure Container Apps.

    az extension add -n containerapp --upgrade
    
  4. Registre el Microsoft.App espacio de nombres.

    az provider register --namespace Microsoft.App
    
  5. Registre el proveedor Microsoft.OperationalInsights para el área de trabajo de Log Analytics de Azure Monitor si no se ha usado antes.

    az provider register --namespace Microsoft.OperationalInsights
    

Creación de un entorno

En los pasos siguientes se crea un grupo de recursos y un entorno de Container Apps.

  1. Cree un grupo de recursos.

    az group create \
      --name $RESOURCE_GROUP \
      --location $LOCATION \
      --query "properties.provisioningState"
    

    Una vez creado, el comando devuelve un mensaje "Correcto".

    Al final de este tutorial, puede eliminar el grupo de recursos para eliminar todos los servicios creados durante este artículo.

  2. Creación de un entorno de Container Apps.

    az containerapp env create \
      --name $ENVIRONMENT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location "$LOCATION" \
      --query "properties.provisioningState"
    

    Una vez creado, el comando devuelve un mensaje "Correcto".

    Los montajes de almacenamiento están asociados a un entorno de Container Apps y se configuran dentro de aplicaciones de contenedor individuales.

Configuración de una cuenta de almacenamiento

A continuación, cree una cuenta de almacenamiento y establezca un recurso compartido de archivos para montarlo en la aplicación de contenedor.

  1. Definir un nombre de cuenta de almacenamiento.

    Este comando genera un sufijo aleatorio al nombre de la cuenta de almacenamiento para garantizar la unicidad.

    STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
    
  2. Cree una cuenta de Azure Storage.

    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
    

    Una vez creado, el comando devuelve un mensaje "Correcto".

  3. Defina un nombre de recurso compartido de archivos.

    STORAGE_SHARE_NAME="myfileshare"
    
  4. Cree el recurso de archivo compartido de Azure Storage.

    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. Obtenga la clave de la cuenta de almacenamiento.

    STORAGE_ACCOUNT_KEY=`az storage account keys list -n $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv`
    

    La clave de la cuenta de almacenamiento es necesaria para crear el vínculo de almacenamiento en el entorno de Container Apps.

  6. Defina el nombre del montaje de almacenamiento.

    STORAGE_MOUNT_NAME="mystoragemount"
    

    Este valor es el nombre que se usa para definir el vínculo de montaje de almacenamiento desde el entorno de Container Apps a la cuenta de Azure Storage.

Creación del montaje de almacenamiento

Ahora puede actualizar la configuración de la aplicación de contenedor para admitir el montaje de almacenamiento.

  1. Cree el vínculo de almacenamiento en el entorno.

    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
    

    Este comando crea un vínculo entre el entorno de la aplicación de contenedor y el recurso compartido de archivos creado con el comando az storage share-rm.

    Ahora que la cuenta de almacenamiento y el entorno están vinculados, puede crear una aplicación de contenedor que use el montaje de almacenamiento.

  2. Defina el nombre de la aplicación de contenedor.

    CONTAINER_APP_NAME="my-container-app"
    
  3. Cree la aplicación de contenedor.

    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
    

    Este comando muestra la dirección URL de la nueva aplicación de contenedor.

  4. Copie la dirección URL y péguela en el explorador web para ir al sitio web.

    Una vez que se cargue la página, verá el mensaje "Bienvenido a nginx!". Deje esta pestaña del explorador abierta. Volverá al sitio web durante los pasos de comprobación del montaje de almacenamiento.

    Ahora que ha confirmado que la aplicación de contenedor está configurada, puede actualizar la aplicación a con una definición de montaje de almacenamiento.

  5. Exporte la configuración de la aplicación de contenedor.

    az containerapp show \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --output yaml > app.yaml
    

    Nota

    Aunque esta aplicación no tiene secretos, muchas aplicaciones realizan secretos de características. De forma predeterminada, al exportar la configuración de una aplicación, los valores de los secretos no se incluyen en el YAML generado.

    Si no necesita cambiar los valores de secreto, puede eliminar la sección secrets y los secretos permanecen sin modificar. Como alternativa, si necesita cambiar el valor de un secreto, asegúrese de proporcionar y namevalue para todos los secretos del archivo antes de intentar actualizar la aplicación. Si se omite un secreto de la sección secrets, se elimina el secreto.

  6. Abra app.yaml en un editor de código.

  7. Reemplace la definición volumes: null de la sección template por una definición volumes: que haga referencia al volumen de almacenamiento. La sección de la plantilla debe ser similar a la siguiente:

    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 nueva sección template.volumes incluye los datos siguientes.

    Propiedad Descripción
    name Este valor coincide con el volumen creado llamando al comando az containerapp env storage set.
    storageName Este valor define el nombre que usan los contenedores del entorno para acceder al volumen de almacenamiento.
    storageType Este valor determina el tipo de volumen de almacenamiento definido para el entorno. En este caso, se declara un montaje Azure Files.

    En la sección volumes se definen los volúmenes en el nivel de aplicación a los que puede hacer referencia el contenedor de aplicaciones o los contenedores sidecar a través de una sección volumeMounts asociada a un contenedor.

  8. Agregue una sección volumeMounts al contenedor nginx en la sección containers.

    containers:
      - image: nginx
        name: my-container-app
        volumeMounts:
        - volumeName: my-azure-file-volume
          mountPath: /var/log/nginx
    

    La nueva sección volumeMounts incluye los datos siguientes:

    Propiedad Descripción
    volumeName Este valor debe coincidir con el nombre definido en la definición volumes.
    mountPath Este valor define la ruta de acceso en el contenedor donde se monta el almacenamiento.
  9. Actualice la aplicación de contenedor con la nueva configuración de montaje de almacenamiento.

    az containerapp update \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --yaml app.yaml \
      --output table
    

Verifique el montaje de almacenamiento

Ahora que se establece el montaje de almacenamiento, puede manipular archivos en Azure Storage desde el contenedor. Use los siguientes comandos para observar el montaje de almacenamiento en el trabajo.

  1. Abra un shell interactivo dentro de la aplicación de contenedor para ejecutar comandos dentro del contenedor en ejecución.

    az containerapp exec \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP
    

    Este comando puede tardar un momento en abrir el shell remoto. Una vez que el shell esté listo, puede interactuar con el montaje de almacenamiento a través de comandos del sistema de archivos.

  2. Cambie a la carpeta nginx /var/log/nginx.

    cd /var/log/nginx
    
  3. Vuelva al explorador y vaya al sitio web y actualice la página varias veces.

    Las solicitudes realizadas al sitio web crean una serie de entradas de flujo de registro.

  4. Vuelva al terminal y enumere los valores de la carpeta /var/log/nginx.

    Tenga en cuenta cómo los archivos access.log y error.log aparecen en esta carpeta. Estos archivos se escriben en el montaje de Azure Files en el recurso compartido de Azure Storage creado en los pasos anteriores.

  5. Vea el contenido del archivo access.log.

    cat access.log
    
  6. Salga del shell interactivo del contenedor para volver a la sesión de terminal local.

    exit
    
  7. Ahora, puede ver los archivos en el Azure Portal para comprobar que existen en la cuenta de Azure Storage. Imprima el nombre de la cuenta de almacenamiento generada aleatoriamente.

    echo $STORAGE_ACCOUNT_NAME
    
  8. Vaya al Azure Portal y abra la cuenta de almacenamiento creada en este procedimiento.

  9. En Almacenamiento de datos, seleccione Recursos compartidos de archivos.

  10. Seleccione myshare para ver los archivos acces.log y error.log.

Limpieza de recursos

Si no va a seguir usando esta aplicación, ejecute el siguiente comando para eliminar el grupo de recursos junto con todos los recursos creados en este artículo.

az group delete \
  --name $RESOURCE_GROUP

Pasos siguientes