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
- Instalar la versión más reciente de la CLI de Azure.
Configuración del entorno
Los siguientes comandos le ayudan a definir variables y a asegurarse de que la extensión Container Apps está actualizada.
Inicie sesión en la CLI de Azure.
az login
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"
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
Registre el
Microsoft.App
espacio de nombres.az provider register --namespace Microsoft.App
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.
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.
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.
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"
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".
Defina un nombre de recurso compartido de archivos.
STORAGE_SHARE_NAME="myfileshare"
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
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.
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.
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.
Defina el nombre de la aplicación de contenedor.
CONTAINER_APP_NAME="my-container-app"
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.
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.
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 yname
value
para todos los secretos del archivo antes de intentar actualizar la aplicación. Si se omite un secreto de la secciónsecrets
, se elimina el secreto.Abra app.yaml en un editor de código.
Reemplace la definición
volumes: null
de la seccióntemplate
por una definiciónvolumes:
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ónvolumeMounts
asociada a un contenedor.Agregue una sección
volumeMounts
al contenedornginx
en la seccióncontainers
.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. 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.
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.
Cambie a la carpeta nginx /var/log/nginx.
cd /var/log/nginx
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.
Vuelva al terminal y enumere los valores de la carpeta
/var/log/nginx
.ls
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.
Vea el contenido del archivo access.log.
cat access.log
Salga del shell interactivo del contenedor para volver a la sesión de terminal local.
exit
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
Vaya al Azure Portal y abra la cuenta de almacenamiento creada en este procedimiento.
En Almacenamiento de datos, seleccione Recursos compartidos de archivos.
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