Usare i montaggi di archiviazione nelle app Azure Container
Un'app contenitore ha accesso a diversi tipi di archiviazione. Una singola app può sfruttare più di un tipo di spazio di archiviazione, se necessario.
Tipo di archiviazione | Descrizione | Persistenza | Esempio di utilizzo |
---|---|---|---|
Archiviazione con ambito contenitore | Archiviazione temporanea disponibile per un contenitore in esecuzione | I dati sono disponibili fino all'arresto del contenitore | Scrittura di una cache dell'app locale. |
Archiviazione con ambito replica | Archiviazione temporanea per la condivisione di file tra contenitori nella stessa replica | I dati sono disponibili fino all'arresto della replica | Il contenitore principale dell'app che scrive i file di log elaborati da un contenitore sidecar. |
File di Azure | Archiviazione permanente | I dati vengono salvati in modo permanente in File di Azure | Scrittura di file in una condivisione file per rendere i dati accessibili da altri sistemi. |
Archiviazione temporanea
Un'app contenitore può leggere e scrivere dati temporanei nell'archiviazione temporanea. Lo spazio di archiviazione temporaneo può essere limitato a un contenitore o a una replica. La quantità totale di risorse di archiviazione con ambito contenitore e con ambito di replica disponibili per ogni replica dipende dalla quantità totale di vCPU allocate alla replica.
vCPU | Spazio di archiviazione temporaneo totale |
---|---|
0,25 o inferiore | 1 GiB |
0,5 o inferiore | 2 GiB |
1 o inferiore | 4 GiB |
Oltre 1 | 8 GiB |
Archiviazione con ambito contenitore
Un contenitore può scrivere nel proprio file system.
L'archiviazione del file system del contenitore presenta le caratteristiche seguenti:
- L'archiviazione è temporanea e scompare quando il contenitore viene arrestato o riavviato.
- I file scritti in questa risorsa di archiviazione sono visibili solo ai processi in esecuzione nel contenitore corrente.
Archiviazione con ambito replica
È possibile montare un volume temporaneo temporaneo equivalente a EmptyDir (directory vuota) in Kubernetes. Questa risorsa di archiviazione ha come ambito una singola replica. Usare un EmptyDir
volume per condividere i dati tra contenitori nella stessa replica.
L'archiviazione con ambito replica presenta le caratteristiche seguenti:
- I file vengono mantenuti per la durata della replica.
- Se un contenitore in una replica viene riavviato, i file nel volume rimangono.
- Qualsiasi contenitore di app o init nella replica può montare lo stesso volume.
- Un contenitore può montare più
EmptyDir
volumi.
Per configurare l'archiviazione con ambito replica, definire innanzitutto un EmptyDir
volume nella revisione. Definire quindi un montaggio del volume in uno o più contenitori nella revisione.
Prerequisiti
Requisito | Istruzioni |
---|---|
Account di Azure | Se non si dispone di un account, crearne uno gratuitamente. |
Ambiente di App contenitore di Azure | Creare un ambiente di app contenitore. |
Impostazione
Quando si configura l'archiviazione con ambito replica usando l'interfaccia della riga di comando di Azure, è necessario usare una definizione YAML per creare o aggiornare l'app contenitore.
Per aggiornare un'app contenitore esistente per usare l'archiviazione con ambito replica, esportare la specifica dell'app in un file YAML denominato app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
Apportare le modifiche seguenti alla specifica dell'app contenitore.
- Aggiungere una
volumes
matrice allatemplate
sezione della definizione dell'app contenitore e definire un volume. Se si dispone già di unavolumes
matrice, aggiungere un nuovo volume alla matrice.name
è un identificatore per il volume.- Usare
EmptyDir
comestorageType
.
- Per ogni contenitore nel modello che si vuole montare il volume, definire un montaggio del volume nella
volumeMounts
matrice della definizione del contenitore.volumeName
è il nome definito nellavolumes
matrice.mountPath
è il percorso nel contenitore per montare il volume.
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
- Aggiungere una
Aggiornare l'app contenitore usando il file YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Per un esempio completo, vedere la specifica YAML.
Per creare un volume con ambito di replica e montarlo in un contenitore, apportare le modifiche seguenti alla risorsa app contenitore in un modello di Resource Manager:
- Aggiungere una
volumes
matrice allatemplate
sezione della definizione dell'app contenitore e definire un volume. Se si dispone già di unavolumes
matrice, aggiungere un nuovo volume alla matrice.name
è un identificatore per il volume.- Usare
EmptyDir
comestorageType
.
- Per ogni contenitore nel modello che si vuole montare il volume, definire un montaggio del volume nella
volumeMounts
matrice della definizione del contenitore.volumeName
è il nome definito nellavolumes
matrice.mountPath
è il percorso nel contenitore per montare il volume.
Esempio di frammento di modello di Resource Manager:
{
"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"
}
]
}
}
}
Per un esempio completo, vedere la specifica dell'API del modello di Resource Manager.
Per creare un volume con ambito di replica e montarlo in un contenitore, distribuire una nuova revisione dell'app contenitore usando il portale di Azure.
Nella portale di Azure passare all'app contenitore.
Selezionare Gestione revisioni nel menu a sinistra.
Selezionare Crea nuova revisione.
Selezionare il contenitore in cui si vuole montare il volume.
Nel riquadro Modifica contesto contenitore selezionare la scheda Montaggi volume.
Nella sezione Archiviazione temporanea creare un nuovo volume con le informazioni seguenti.
- Nome volume: nome del volume temporaneo.
- Percorso di montaggio: percorso assoluto nel contenitore per montare il volume.
Selezionare Salva per salvare le modifiche e uscire dal riquadro del contesto.
Selezionare Crea per creare la nuova revisione.
Volume di File di Azure
È possibile montare una condivisione file da File di Azure come volume in un contenitore.
File di Azure archiviazione presenta le caratteristiche seguenti:
- I file scritti nel percorso di montaggio vengono salvati in modo permanente nella condivisione file.
- I file nella condivisione sono disponibili tramite il percorso di montaggio.
- Più contenitori possono montare la stessa condivisione file, incluse quelle presenti in un'altra replica, revisione o app contenitore.
- Tutti i contenitori che montano la condivisione possono accedere ai file scritti da qualsiasi altro contenitore o metodo.
- È possibile montare più di un volume File di Azure in un singolo contenitore.
File di Azure supporta sia i protocolli SMB che NFS. È possibile montare una condivisione File di Azure usando uno dei due protocolli. La condivisione file definita nell'ambiente deve essere configurata con lo stesso protocollo usato dalla condivisione file nell'account di archiviazione.
Nota
Il supporto per il montaggio di condivisioni NFS in App Azure Container è disponibile in anteprima.
Per abilitare File di Azure archiviazione nel contenitore, è necessario configurare l'ambiente e l'app contenitore come indicato di seguito:
- Creare una definizione di archiviazione nell'ambiente App contenitore.
- Se si usa NFS, l'ambiente deve essere configurato con una rete virtuale personalizzata e l'account di archiviazione deve essere configurato per consentire l'accesso dalla rete virtuale. Per altre informazioni, vedere Condivisioni file NFS in File di Azure .
- Se l'ambiente è configurato con una rete virtuale personalizzata, è necessario consentire le porte 445 e 2049 nel gruppo di sicurezza di rete (NSG) associato alla subnet.
- Definire un volume di tipo
AzureFile
(SMB) oNfsAzureFile
(NFS) in una revisione. - Definire un montaggio del volume in uno o più contenitori nella revisione.
- L'account di archiviazione File di Azure usato deve essere accessibile dalla rete virtuale dell'app contenitore. Per altre informazioni, vedere Concedere l'accesso da una rete virtuale.
- Se si usa NFS, è necessario disabilitare anche il trasferimento sicuro. Per altre informazioni, vedere Condivisioni file NFS in File di Azure e la sezione Creare una condivisione file di Azure NFS in questa esercitazione.
Prerequisiti
Requisito | Istruzioni |
---|---|
Account di Azure | Se non si dispone di un account, crearne uno gratuitamente. |
Account di archiviazione di Azure | Creare un account di archiviazione. |
Ambiente di App contenitore di Azure | Creare un ambiente di app contenitore. |
Impostazione
Quando si configura un'app contenitore per montare un volume File di Azure usando l'interfaccia della riga di comando di Azure, è necessario usare una definizione YAML per creare o aggiornare l'app contenitore.
Per un'esercitazione dettagliata sul montaggio di una condivisione file SMB, vedere Creare un montaggio di archiviazione File di Azure in App Azure Container.
Aggiungere una definizione di archiviazione all'ambiente app contenitore.
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 ReadWrite
Sostituire
<STORAGE_ACCOUNT_NAME>
e<STORAGE_ACCOUNT_KEY>
con il nome e la chiave dell'account di archiviazione. Sostituire<STORAGE_SHARE_NAME>
con il nome della condivisione file nell'account di archiviazione.I valori validi per
--access-mode
sonoReadWrite
eReadOnly
.Per aggiornare un'app contenitore esistente per montare una condivisione file, esportare la specifica dell'app in un file YAML denominato app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
Apportare le modifiche seguenti alla specifica dell'app contenitore.
- Aggiungere una
volumes
matrice allatemplate
sezione della definizione dell'app contenitore e definire un volume. Se si dispone già di unavolumes
matrice, aggiungere un nuovo volume alla matrice.name
è un identificatore per il volume.- Per
storageType
, usareAzureFile
per SMB oNfsAzureFile
per NFS. Questo valore deve corrispondere al tipo di archiviazione definito nell'ambiente. - Per
storageName
usare il nome dell'archiviazione definita nell'ambiente.
- Per ogni contenitore nel modello che si vuole montare File di Azure archiviazione, definire un montaggio del volume nella
volumeMounts
matrice della definizione del contenitore.volumeName
è il nome definito nellavolumes
matrice.mountPath
è il percorso nel contenitore per montare il volume.
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 volumes: - name: azure-files-volume storageType: AzureFile storageName: mystorage
- Aggiungere una
Aggiornare l'app contenitore usando il file YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Per un esempio completo, vedere la specifica YAML.
I frammenti di modello di Resource Manager seguenti illustrano come aggiungere una condivisione File di Azure a un ambiente app contenitore e usarla in un'app contenitore.
Aggiungere una
storages
risorsa figlio all'ambiente App contenitore.{ "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" } } } ] }
Aggiornare la risorsa dell'app contenitore per aggiungere un volume e un montaggio del volume.
{ "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" } ] } ], "scale": { "minReplicas": 1, "maxReplicas": 3 }, "volumes": [ { "name": "azure-files-volume", "storageType": "AzureFile", "storageName": "myazurefiles" } ] } } }
- Aggiungere una
volumes
matrice allatemplate
sezione della definizione dell'app contenitore e definire un volume. Se si dispone già di unavolumes
matrice, aggiungere un nuovo volume alla matrice.name
è un identificatore per il volume.- Per
storageType
, usareAzureFile
per SMB oNfsAzureFile
per NFS. Questo valore deve corrispondere al tipo di archiviazione definito nell'ambiente. - Per
storageName
usare il nome dell'archiviazione definita nell'ambiente.
- Per ogni contenitore nel modello che si vuole montare File di Azure archiviazione, definire un montaggio del volume nella
volumeMounts
matrice della definizione del contenitore.volumeName
è il nome definito nellavolumes
matrice.mountPath
è il percorso nel contenitore per montare il volume.
- Aggiungere una
Per un esempio completo, vedere la specifica dell'API del modello di Resource Manager.
Per configurare un montaggio del volume per File di Azure archiviazione nel portale di Azure, aggiungere una condivisione file all'ambiente App contenitore e quindi aggiungere un montaggio del volume all'app contenitore creando una nuova revisione.
Nella portale di Azure passare all'ambiente App contenitore.
Selezionare File di Azure dal menu a sinistra.
Selezionare Aggiungi.
Nel menu di scelta rapida Aggiungi condivisione file immettere le informazioni seguenti:
- Nome: nome della condivisione file.
- Archiviazione nome dell'account: nome dell'account di archiviazione che contiene la condivisione file.
- Archiviazione chiave dell'account: chiave di accesso per l'account di archiviazione.
- Condivisione file: nome della condivisione file.
- Modalità di accesso: modalità di accesso per la condivisione file. I valori validi sono "Lettura/Scrittura" e "Sola lettura".
Selezionare Aggiungi per uscire dal riquadro di contesto.
Selezionare Salva per eseguire il commit delle modifiche.
Passare all'app contenitore.
Selezionare Gestione revisioni dal menu a sinistra.
Selezionare Crea nuova revisione.
Selezionare il contenitore in cui si vuole montare il volume.
Nel riquadro Modifica contesto contenitore selezionare la scheda Montaggi volume.
Nella sezione Condivisioni file creare un nuovo volume con le informazioni seguenti.
- Nome condivisione file: condivisione file aggiunta.
- Percorso di montaggio: percorso assoluto nel contenitore per montare il volume.
Selezionare Salva per salvare le modifiche e uscire dal riquadro del contesto.
Selezionare Crea per creare la nuova revisione.