Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una aplicación de contenedor tiene acceso a diferentes tipos de almacenamiento. Una sola aplicación puede aprovechar más de un tipo de almacenamiento si es necesario.
Nota:
Evite usar caracteres especiales en nombres de volumen para evitar errores de implementación. Por ejemplo, un volumen denominado credentials.json contiene un carácter especial (.) que produce un error de implementación.
| Tipo de almacenamiento | Descripción | Persistencia | Ejemplo de uso |
|---|---|---|---|
| Almacenamiento con ámbito de contenedor | Almacenamiento efímero disponible para un contenedor en ejecución | Los datos están disponibles hasta que se apaga el contenedor | Escritura de una caché de aplicaciones local. |
| Almacenamiento con ámbito de réplica | Almacenamiento efímero para compartir archivos entre contenedores de la misma réplica | Los datos están disponibles hasta que se apaga la réplica | El contenedor de aplicaciones principal que escribe archivos de registro que procesa un contenedor sidecar. |
| Archivos de Azure | Almacenamiento permanente | Los datos se conservan en Azure Files | Escritura de archivos en un recurso compartido de archivos para que otros sistemas puedan acceder a los datos. |
Nota:
Azure Container Apps no admite el montaje de recursos compartidos de archivos desde Azure NetApp Files ni Azure Blob Storage.
Almacenamiento efímero
Una aplicación de contenedor puede leer y escribir datos temporales en el almacenamiento efímero. El almacenamiento efímero tiene como ámbito un contenedor o una réplica. La cantidad total de almacenamiento con ámbito de contenedor y de réplica disponible para cada réplica depende del número total de CPU virtuales asignadas a la réplica.
| vCPU | Almacenamiento efímero total |
|---|---|
| 0,25 o menos | 1 GiB |
| 0,5 o menos | 2 GiB |
| 1 o menos | 4 GiB |
| Más de 1 | 8 GiB |
Almacenamiento con ámbito de contenedor
Un contenedor puede escribir en su propio sistema de archivos.
El almacenamiento del sistema de archivos de contenedor tiene las siguientes características:
- El almacenamiento es temporal y desaparece cuando el contenedor se cierra o se reinicia.
- Los archivos escritos en este almacenamiento solo son visibles para los procesos que se ejecutan en el contenedor actual.
Almacenamiento con ámbito de réplica
Puede montar un volumen temporal efímero equivalente a EmptyDir (directorio vacío) en Kubernetes. Este almacenamiento tiene como ámbito una sola réplica. Use un volumen de EmptyDir para compartir datos entre contenedores de la misma réplica.
El almacenamiento con ámbito de réplica tiene las siguientes características:
- Los archivos se conservan durante la vigencia de la réplica.
- Si se reinicia un contenedor en una réplica, los archivos del volumen permanecen.
- Cualquier contenedor de inicialización o aplicaciones de la réplica puede montar el mismo volumen.
- Un contenedor puede montar varios volúmenes
EmptyDir.
Para configurar el almacenamiento con ámbito de réplica, defina primero un volumen EmptyDir en la revisión. A continuación, defina un montaje de volumen en uno o varios contenedores de la revisión.
Requisitos previos
| Requisito | Instrucciones |
|---|---|
| Cuenta de Azure | Si no tiene ninguna cuenta, cree una gratuita. |
| Entorno de Azure Container Apps | Creación de un entorno de Container Apps. |
| Configuración de identidad administrada | Asegúrese de que a la identidad administrada asociada al entorno de Container Apps se le asignan los roles adecuados para acceder a Azure Files. |
Configuración
Al configurar un almacenamiento con ámbito de réplica mediante la CLI de Azure, debe usar una definición de YAML para crear o actualizar la aplicación de contenedor.
Para actualizar una aplicación de contenedor existente de modo que use el almacenamiento con ámbito de réplica, exporte la especificación de la aplicación a un archivo YAML denominado app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yamlRealice los siguientes cambios en la especificación de la aplicación de contenedor.
- Agregue una matriz
volumesa la seccióntemplatede la definición de la aplicación de contenedor y defina un volumen. Si ya tiene una matriz devolumes, agregue un nuevo volumen a la matriz.-
namees un identificador del volumen. - Use
EmptyDircomostorageType.
-
- Para cada contenedor de la plantilla en el que desee montar el volumen, defina un montaje de volumen en la matriz
volumeMountsde la definición del contenedor.-
volumeNamees el nombre definido en la matrizvolumes. -
mountPathes la ruta de acceso del contenedor en el que se va a montar el volumen.
-
properties: managedEnvironmentId: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/managedEnvironments/<ENVIRONMENT_NAME> configuration: activeRevisionsMode: Single template: containers: - image: <IMAGE_NAME1> name: my-container-1 volumeMounts: - mountPath: /myempty volumeName: myempty - image: <IMAGE_NAME_2> name: my-container-2 volumeMounts: - mountPath: /myempty volumeName: myempty volumes: - name: myempty storageType: EmptyDir- Agregue una matriz
Actualice la aplicación de contenedor mediante el archivo YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Consulte la especificación de YAML para ver un ejemplo completo.
Para crear un volumen con ámbito de réplica y montarlo en un contenedor, realice los siguientes cambios en el recurso de aplicaciones de contenedor de una plantilla de ARM:
- Agregue una matriz
volumesa la seccióntemplatede la definición de la aplicación de contenedor y defina un volumen. Si ya tiene una matriz devolumes, agregue un nuevo volumen a la matriz.-
namees un identificador del volumen. - Use
EmptyDircomostorageType.
-
- Para cada contenedor de la plantilla en el que desee montar el volumen, defina un montaje de volumen en la matriz
volumeMountsde la definición del contenedor.-
volumeNamees el nombre definido en la matrizvolumes. -
mountPathes la ruta de acceso del contenedor en el que se va a montar el volumen.
-
Ejemplo de fragmento de código de plantilla de ARM:
{
"apiVersion": "2022-03-01",
"type": "Microsoft.App/containerApps",
"name": "[parameters('containerappName')]",
"location": "[parameters('location')]",
"properties": {
...
"template": {
"revisionSuffix": "myrevision",
"containers": [
{
"name": "main",
"image": "[parameters('container_image')]",
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/myempty",
"volumeName": "myempty"
}
]
},
{
"name": "sidecar",
"image": "[parameters('sidecar_image')]",
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/myempty",
"volumeName": "myempty"
}
]
}
],
"scale": {
"minReplicas": 1,
"maxReplicas": 3
},
"volumes": [
{
"name": "myempty",
"storageType": "EmptyDir"
}
]
}
}
}
Consulte la especificación de API de la plantilla de ARM para obtener un ejemplo completo.
Para crear un volumen con ámbito de réplica y montarlo en un contenedor, implemente una nueva revisión de la aplicación de contenedor mediante Azure Portal.
Vaya a la aplicación de contenedor en Azure Portal.
Seleccione Administración de revisiones en el menú izquierdo.
Seleccione Crear nueva revisión.
Seleccione el contenedor en el que desea montar el volumen.
En el panel de contexto Editar un contenedor, seleccione la pestaña Montajes de volúmenes.
En la sección Almacenamiento efímero, cree un nuevo volumen con la siguiente información.
- Nombre del volumen: nombre del volumen efímero.
- Ruta de acceso de montaje: ruta de acceso absoluta del contenedor para montar el volumen.
Seleccione Guardar para guardar los cambios y salir del panel de contexto.
Seleccione Crear para crear la nueva revisión.
Volumen de Azure Files
Puede montar un recurso compartido de archivos en Azure Files como un volumen dentro de un contenedor.
El almacenamiento de Azure Files tiene las siguientes características:
- Los archivos escritos en la ubicación de montaje se conservan en el recurso compartido de archivos.
- Los archivos del recurso compartido están disponibles a través de la ubicación de montaje.
- Varios contenedores pueden montar el mismo recurso compartido de archivos, incluidos aquellos que se encuentran en otra réplica, revisión o aplicación de contenedor.
- Todos los contenedores que monten el recurso compartido de archivos pueden acceder a los archivos escritos por cualquier otro contenedor o método.
- Se puede montar más de un volumen de Azure Files en un único contenedor.
Azure Files admite tanto los protocolos de SMB (Bloque de mensajes del servidor) y NFS (Network File System). Puede montar un recurso compartido de archivos de Azure Files mediante cualquiera de los protocolos. El recurso compartido de archivos que defina en el entorno debe configurarse con el mismo protocolo usado por el recurso compartido de archivos en la cuenta de almacenamiento.
Para habilitar el almacenamiento de Azure Files en el contenedor, debe configurar el entorno y la aplicación de contenedor de la siguiente manera:
- Cree una definición de almacenamiento en el entorno de Container Apps.
- Si usa NFS, el entorno debe configurarse con una red virtual personalizada, mientras que la cuenta de almacenamiento debe configurarse para permitir el acceso desde la red virtual. Para obtener más información, consulte Recursos compartidos de archivos NFS en Azure Files.
- Si el entorno está configurado con una red virtual personalizada, debe permitir los puertos 445 y 2049 en el grupo de seguridad de red (NSG) asociado a la subred.
- Defina un volumen de tipo
AzureFile(SMB) oNfsAzureFile(NFS) en una revisión. - Defina un montaje de volumen en uno o varios contenedores de la revisión.
- La cuenta de almacenamiento de Azure Files usada debe ser accesible desde la red virtual de la aplicación de contenedor. Para más información, consulte Concesión de acceso desde una red virtual.
- Si usa NFS, también debe deshabilitar la transferencia segura. Para más información, consulte Recursos compartidos de archivos NFS en Azure Files.
Requisitos previos
| Requisito | Instrucciones |
|---|---|
| Cuenta de Azure | Si no tiene ninguna cuenta, cree una gratuita. |
| Cuenta de Azure Storage | Crear una cuenta de almacenamiento. |
| Entorno de Azure Container Apps | Creación de un entorno de Container Apps. |
Configuración
Al configurar una aplicación contenedora para montar un volumen de Azure Files mediante la CLI de Azure, debe usar una definición de YAML para crear o actualizar la aplicación de contenedor.
Para ver un tutorial paso a paso sobre cómo montar un recurso compartido de archivos SMB, consulte Cómo crear un montaje de volumen Azure Files en Azure Container Apps.
Agregue una definición de almacenamiento en el entorno de Container Apps.
az containerapp env storage set --name my-env --resource-group my-group \ --storage-name mystorage \ --storage-type AzureFile \ --azure-file-account-name <STORAGE_ACCOUNT_NAME> \ --azure-file-account-key <STORAGE_ACCOUNT_KEY> \ --azure-file-share-name <STORAGE_SHARE_NAME> \ --access-mode ReadWriteReemplace
<STORAGE_ACCOUNT_NAME>y<STORAGE_ACCOUNT_KEY>por el nombre y la clave de su cuenta de almacenamiento. Reemplace<STORAGE_SHARE_NAME>por el nombre del recurso compartido de archivos de la cuenta de almacenamiento.Los valores válidos para
--access-modesonReadWriteyReadOnly.Para actualizar una aplicación de contenedor existente para que monte un recurso compartido de archivos, exporte la especificación de la aplicación a un archivo YAML denominado app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yamlRealice los siguientes cambios en la especificación de la aplicación de contenedor.
- Agregue una matriz
volumesa la seccióntemplatede la definición de la aplicación de contenedor y defina un volumen. Si ya tiene una matriz devolumes, agregue un nuevo volumen a la matriz.-
namees un identificador del volumen. - Para
storageType, useAzureFilepara SMB oNfsAzureFilepara NFS. Este valor debe coincidir con el tipo de almacenamiento que definió en el entorno. - Para
storageName, use el nombre del almacenamiento que definió en el entorno. -
mountOptionses una cadena separada por comas de opciones de montaje. Para más información, consulte Uso de la configuración mountOptions en Azure Files. - La
secretslista es una lista de secretos que se van a montar en el volumen. Para obtener más información, consulte Secretos de montaje en un volumen.
-
- Para cada contenedor de la plantilla en el que desee montar el almacenamiento de Azure Files, defina un montaje de volumen en la matriz
volumeMountsde la definición del contenedor.-
volumeNamees el nombre definido en la matrizvolumes. -
mountPathes la ruta de acceso del contenedor en el que se va a montar el volumen. -
subPathes la ruta de acceso del volumen que se va a montar. Si no se especifica, se monta la raíz del volumen. Para obtener más información, consulte (#sub-path).
-
properties: managedEnvironmentId: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/managedEnvironments/<ENVIRONMENT_NAME> configuration: template: containers: - image: <IMAGE_NAME> name: my-container volumeMounts: - volumeName: azure-files-volume mountPath: /my-files subPath: my-sub-path volumes: - name: azure-files-volume storageType: AzureFile storageName: mystorage- Agregue una matriz
Actualice la aplicación de contenedor mediante el archivo YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Consulte la especificación de YAML para ver un ejemplo completo.
Los siguientes fragmentos de código de la plantilla de ARM muestran cómo agregar un recurso compartido de archivos de Azure Files a un entorno de Container Apps y su utilización en una aplicación de contenedor.
Agregue un recurso secundario
storagesal entorno de Container Apps.{ "type": "Microsoft.App/managedEnvironments", "apiVersion": "2022-03-01", "name": "[parameters('environment_name')]", "location": "[parameters('location')]", "properties": { "daprAIInstrumentationKey": "[parameters('dapr_ai_instrumentation_key')]", "appLogsConfiguration": { "destination": "log-analytics", "logAnalyticsConfiguration": { "customerId": "[parameters('log_analytics_customer_id')]", "sharedKey": "[parameters('log_analytics_shared_key')]" } } }, "resources": [ { "type": "storages", "name": "myazurefiles", "apiVersion": "2022-03-01", "dependsOn": [ "[resourceId('Microsoft.App/managedEnvironments', parameters('environment_name'))]" ], "properties": { "azureFile": { "accountName": "[parameters('storage_account_name')]", "accountKey": "[parameters('storage_account_key')]", "shareName": "[parameters('storage_share_name')]", "accessMode": "ReadWrite" } } } ] }Actualice el recurso de la aplicación de contenedor para que agregue un volumen y un montaje de volumen.
{ "apiVersion": "2023-05-01", "type": "Microsoft.App/containerApps", "name": "[parameters('containerappName')]", "location": "[parameters('location')]", "properties": { ... "template": { "revisionSuffix": "myrevision", "containers": [ { "name": "main", "image": "[parameters('container_image')]", "resources": { "cpu": 0.5, "memory": "1Gi" }, "volumeMounts": [ { "mountPath": "/myfiles", "volumeName": "azure-files-volume", "subPath": "my-sub-path" } ] } ], "scale": { "minReplicas": 1, "maxReplicas": 3 }, "volumes": [ { "name": "azure-files-volume", "storageType": "AzureFile", "storageName": "myazurefiles" } ] } } }- Agregue una matriz
volumesa la seccióntemplatede la definición de la aplicación de contenedor y defina un volumen. Si ya tiene una matriz devolumes, agregue un nuevo volumen a la matriz.-
namees un identificador del volumen. - Para
storageType, useAzureFilepara SMB oNfsAzureFilepara NFS. Este valor debe coincidir con el tipo de almacenamiento que definió en el entorno. - Para
storageName, use el nombre del almacenamiento que definió en el entorno. -
mountOptionses una cadena separada por comas de opciones de montaje. Para más información, consulte Uso de la configuración mountOptions en Azure Files. - La
secretslista es una lista de secretos que se van a montar en el volumen. Para obtener más información, consulte Secretos de montaje en un volumen.
-
- Para cada contenedor de la plantilla en el que desee montar el almacenamiento de Azure Files, defina un montaje de volumen en la matriz
volumeMountsde la definición del contenedor.-
volumeNamees el nombre definido en la matrizvolumes. -
mountPathes la ruta de acceso del contenedor en el que se va a montar el volumen. -
subPath(opcional) es la ruta de acceso del volumen que se va a montar. Si no se especifica, se monta la raíz del volumen. Para obtener más información, consulte (#sub-path).
-
- Agregue una matriz
Consulte la especificación de API de la plantilla de ARM para obtener un ejemplo completo.
Para configurar un montaje de volumen para el almacenamiento de Azure Files en Azure Portal, agregue un recurso compartido de archivos al entorno de Container Apps y, luego, agregue un montaje de volumen a la aplicación de contenedor mediante la creación de una nueva revisión.
En Azure Portal, vaya al entorno de Container App.
En el panel de navegación, en Configuración, seleccione Azure Files.
Seleccione Agregar.
Seleccione Bloque de mensajes del servidor (SMB) o Network File System (NFS), en función del protocolo usado por el recurso compartido de archivos.
En el panel de contexto Agregar recurso compartido de archivos, escriba la siguiente información:
- Nombre: nombre del recurso compartido de archivos.
- Nombre de la cuenta de almacenamiento: nombre de la cuenta de almacenamiento que contiene el recurso compartido de archivos.
- Clave de la cuenta de almacenamiento: clave de acceso de la cuenta de almacenamiento.
- Recurso compartido de archivos: nombre del recurso compartido de archivos.
- Modo de acceso: modo de acceso del recurso compartido de archivos. Los valores válidos son Lectura y escritura y Solo lectura.
Seleccione Agregar para salir del panel de contexto.
Haga clic en Guardar para confirmar los cambios.
Vaya a la aplicación de contenedor.
En el panel de navegación, en Aplicación, seleccione Revisiones y réplicas.
Seleccione Crear nueva revisión.
En la página Crear e implementar una nueva revisión, seleccione la pestaña Volúmenes.
Seleccione Agregar.
En el panel de contexto Agregar volumen, establezca lo siguiente.
- Tipo de volumen: volumen de archivos de Azure.
- Nombre: escriba un nombre de volumen.
- Nombre del recurso compartido de archivos: seleccione el recurso compartido de archivos que creó anteriormente.
- Opciones de montaje: opcionalmente, escriba una cadena separada por comas de opciones de montaje. Para más información, consulte Uso de la configuración mountOptions en Azure Files.
Seleccione Agregar para salir del panel de contexto.
En la página Crear e implementar una nueva revisión, seleccione la pestaña Contenedor.
Seleccione el contenedor en el que desea montar el volumen.
En el panel de contexto Editar un contenedor, seleccione la pestaña Montajes de volúmenes.
En Nombre del volumen, seleccione el volumen que creó anteriormente.
En Ruta de acceso de montaje, escriba la ruta de acceso absoluta del contenedor para montar el volumen.
En Ruta de acceso secundaria (opcional), escriba la ruta de acceso en el volumen que se va a montar. Si no se especifica, se monta la raíz del volumen. Para obtener más información, consulte (#sub-path).
Seleccione Guardar para guardar los cambios y salir del panel de contexto.
Seleccione Crear para crear la nueva revisión.
Ruta de acceso secundaria
Al montar un recurso compartido de archivos desde Azure Files, además de la ruta de montaje, también puede especificar una ruta de acceso secundaria.
- Ruta de acceso de montaje: La ruta en el contenedor donde desea montar el volumen.
- Ruta de acceso secundaria: La ruta en el volumen que quieres montar.
La subruta es opcional. Si no se especifica, se monta la raíz del volumen.
La ruta relativa es un subdirectorio desde la raíz del volumen. La subruta no debe comenzar con /. Especificar una subruta que comience por / podría impedir que se inicie la aplicación contenedora. Por ejemplo, my-volume-folder es una subruta válida, donde /my-volume-folder no.
La subruta puede hacer referencia a una carpeta o a un archivo del volumen.
Si la subruta hace referencia a una carpeta, la ruta de acceso de montaje debe hacer referencia a una carpeta vacía en el contenedor.
Si la subruta hace referencia a un archivo, la ruta de acceso de montaje debe hacer referencia a un archivo que aún no existe en el contenedor.
Por ejemplo, supongamos que la ruta de acceso secundaria s
my-volume-folder/my-volume-file.txty la ruta de acceso de montaje es/my-container-folder/my-container-file. La carpeta/my-container-folderya debe existir en el contenedor, pero aún no debe contener el archivomy-container-file.txt.
Se omiten las barras diagonales finales de rutas de acceso secundarias.