Utiliser des montages de stockage dans Azure Container Apps
Une application conteneur a accès à différents types de stockage. Une application unique peut tirer parti de plusieurs types de stockage si nécessaire.
Type de stockage | Description | Persistance | Exemple d’utilisation |
---|---|---|---|
Stockage à l’échelle du conteneur | Stockage éphémère disponible pour un conteneur en cours d’exécution | Les données sont disponibles jusqu’à l’arrêt du conteneur | Écriture d’un cache d’application local. |
Stockage à l’échelle du réplica | Stockage éphémère pour le partage de fichiers entre les conteneurs d’un même réplica | Les données sont disponibles jusqu’à l’arrêt du réplica | Le conteneur d’application principal qui écrit des fichiers journaux traités par un conteneur side-car. |
Azure Files | Stockage permanent | Les données sont conservées de manière persistante dans Azure Files | Écriture de fichiers dans un partage de fichiers pour rendre les données accessibles par d’autres systèmes. |
Stockage éphémère
Une application conteneur peut lire et écrire des données temporaires dans un stockage éphémère. L’étendue du stockage éphémère peut être définie à l’échelle d’un conteneur ou d’un réplica. La quantité totale de stockage à l’échelle du conteneur et du réplica disponible pour chaque réplica dépend du nombre total de processeurs virtuels alloués au réplica.
Processeurs virtuels | Total du stockage éphémère |
---|---|
0,25 ou moins | 1 Gio |
0,5 ou moins | 2 Gio |
1 ou moins | 4 Gio |
Plus de 1 | 8 Gio |
Stockage à l’échelle du conteneur
Un conteneur peut écrire dans son propre système de fichiers.
Le stockage du système de fichiers conteneur présente les caractéristiques suivantes :
- Le stockage est temporaire et disparaît quand le conteneur est arrêté ou redémarré.
- Les fichiers écrits dans ce stockage ne sont visibles que par les processus en cours d’exécution dans le conteneur actuel.
Stockage à l’échelle du réplica
Vous pouvez monter un volume temporaire éphémère équivalent à EmptyDir (répertoire vide) dans Kubernetes. L’étendue de ce stockage est définie à l’échelle d’un seul réplica. Utilisez un volume EmptyDir
pour partager des données entre les conteneurs d’un même réplica.
Le stockage à l’échelle d’un réplica présente les caractéristiques suivantes :
- Les fichiers sont conservés pendant la durée de vie du réplica.
- Si un conteneur redémarre dans un réplica, les fichiers situés dans le volume restent.
- Tous les conteneurs init ou conteneurs d’application du réplica peuvent monter le même volume.
- Un conteneur peut monter plusieurs volumes
EmptyDir
.
Pour configurer un stockage à l’échelle du réplica, définissez d’abord un volume EmptyDir
dans la révision. Définissez ensuite un montage de volume dans un ou plusieurs conteneurs dans la révision.
Prérequis
Condition requise | Instructions |
---|---|
Compte Azure | Si vous n’en avez pas un, créez un compte gratuitement. |
Environnement Azure Container Apps | Créez un environnement d’applications conteneurs. |
Configuration
Quand vous configurez un stockage à l’échelle du réplica à l’aide d’Azure CLI, vous devez utiliser une définition YAML pour créer ou mettre à jour votre application conteneur.
Pour mettre à jour une application conteneur existante afin d’utiliser le stockage à l’échelle du réplica, exportez la spécification de votre application vers un fichier YAML nommé app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
Apportez les modifications suivantes à la spécification de votre application conteneur.
- Ajoutez un tableau
volumes
à la sectiontemplate
de votre définition d’application conteneur et définissez un volume. Si vous disposez déjà d’un tableauvolumes
, ajoutez un nouveau volume au tableau.name
correspond à un identificateur pour le volume.- Utilisez
EmptyDir
commestorageType
.
- Pour chaque conteneur du modèle où vous souhaitez monter le volume, définissez un montage de volume dans le tableau
volumeMounts
de la définition de conteneur.volumeName
correspond au nom défini dans le tableauvolumes
.mountPath
correspond au chemin dans le conteneur où monter le 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
- Ajoutez un tableau
Mettez à jour votre application conteneur à l’aide du fichier YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Consultez la spécification YAML pour obtenir un exemple complet.
Pour créer un volume à l’échelle d’un réplica et le monter dans un conteneur, apportez les changements suivants à la ressource d’applications conteneur dans un modèle ARM :
- Ajoutez un tableau
volumes
à la sectiontemplate
de votre définition d’application conteneur et définissez un volume. Si vous disposez déjà d’un tableauvolumes
, ajoutez un nouveau volume au tableau.name
correspond à un identificateur pour le volume.- Utilisez
EmptyDir
commestorageType
.
- Pour chaque conteneur du modèle où vous souhaitez monter le volume, définissez un montage de volume dans le tableau
volumeMounts
de la définition de conteneur.volumeName
correspond au nom défini dans le tableauvolumes
.mountPath
correspond au chemin dans le conteneur où monter le volume.
Exemple d’extrait de modèle 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"
}
]
}
}
}
Consultez la spécification de l’API de modèle ARM pour obtenir un exemple complet.
Pour créer un volume à l’échelle d’un réplica et le monter dans un conteneur, déployez une nouvelle révision de votre application conteneur à l’aide du portail Azure.
Dans le portail Azure, accédez à votre application conteneur.
Sélectionnez Gestion des révisions dans le menu de gauche.
Sélectionnez Créer une nouvelle révision.
Sélectionnez le conteneur où vous souhaitez monter le volume.
Dans le volet contextuel Modifier un conteneur, sélectionnez l’onglet Montages de volume.
Sous la section Stockage éphémère, créez un volume avec les informations suivantes.
- Nom de volume : nom du volume éphémère.
- Chemin de montage : chemin d’accès absolu dans le conteneur pour monter le volume.
Sélectionnez Enregistrer pour enregistrer les changements et quitter le volet contextuel.
Sélectionnez Créer pour créer la nouvelle révision.
Volume Azure Files
Vous pouvez monter un partage de fichiers à partir d’Azure Files en tant que volume au sein d’un conteneur.
Le stockage Azure Files présente les caractéristiques suivantes :
- Les fichiers écrits sous l’emplacement de montage sont conservés dans le partage de fichiers.
- Les fichiers inclus dans le partage sont disponibles par le biais de l’emplacement de montage.
- Plusieurs conteneurs peuvent monter le même partage de fichiers, y compris ceux qui se trouvent dans un autre réplica, une autre révision ou une autre application conteneur.
- Tous les conteneurs qui montent le partage peuvent accéder aux fichiers écrits par tout autre conteneur ou toute autre méthode.
- Plusieurs volumes Azure Files peuvent être montés dans un seul conteneur.
Azure Files prend en charge les protocoles SMB (Server Message Block) et NFS (Network File System). Vous pouvez monter un partage Azure Files à l’aide de l’un ou l’autre de ces protocoles. Le partage de fichiers que vous définissez dans l’environnement doit être configuré avec le même protocole que celui utilisé par le partage de fichiers dans le compte de stockage.
Remarque
La prise en charge du montage de partages NFS dans Azure Container Apps est en préversion.
Pour activer le stockage Azure Files dans votre conteneur, vous devez configurer votre environnement et votre application conteneur comme suit :
- Créez une définition de stockage dans l'environnement Container Apps.
- Si vous utilisez NFS, votre environnement doit être configuré avec un réseau virtuel personnalisé, et le compte de stockage doit être configuré pour autoriser l’accès depuis le réseau virtuel. Pour plus d’informations, consultez Partages de fichiers NFS dans Azure Files.
- Si votre environnement est configuré avec un VNet personnalisé, vous devez autoriser les ports 445 et 2049 dans le groupe NSG (groupe de sécurité réseau) associé au sous-réseau.
- Définissez un volume de type
AzureFile
(SMB) ouNfsAzureFile
(NFS) dans une révision. - Définissez un montage de volume dans un ou plusieurs conteneurs dans la révision.
- Le compte de stockage Azure Files utilisé doit être accessible à partir du réseau virtuel de votre application conteneur. Pour plus d'informations, consultez Accorder l'accès à partir d'un réseau virtuel.
- Si vous utilisez NFS, vous devez également désactiver le transfert sécurisé. Pour plus d’informations, consultez Partages de fichiers NFS dans Azure Files, et la section Créer un partage de fichiers Azure NFS dans ce tutoriel.
Prérequis
Condition requise | Instructions |
---|---|
Compte Azure | Si vous n’en avez pas un, créez un compte gratuitement. |
compte Stockage Azure | Créer un compte de stockage. |
Environnement Azure Container Apps | Créez un environnement d’applications conteneurs. |
Configuration
Quand vous configurez une application conteneur afin de monter un volume Azure Files à l’aide d’Azure CLI, vous devez utiliser une définition YAML pour créer ou mettre à jour votre application conteneur.
Pour accéder à un tutoriel pas à pas sur le montage d’un partage de fichiers SMB, consultez Créer un montage de stockage Azure Files dans Azure Container Apps.
Ajoutez une définition de stockage à votre environnement 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 ReadWrite
Remplacez
<STORAGE_ACCOUNT_NAME>
et<STORAGE_ACCOUNT_KEY>
par le nom et la clé de votre compte de stockage. Remplacez<STORAGE_SHARE_NAME>
par le nom du partage de fichiers dans le compte de stockage.Les valeurs valides pour
--access-mode
sontReadWrite
etReadOnly
.Pour mettre à jour une application conteneur existante afin de monter un partage de fichiers, exportez la spécification de votre application vers un fichier YAML nommé app.yaml.
az containerapp show -n <APP_NAME> -g <RESOURCE_GROUP_NAME> -o yaml > app.yaml
Apportez les modifications suivantes à la spécification de votre application conteneur.
- Ajoutez un tableau
volumes
à la sectiontemplate
de votre définition d’application conteneur et définissez un volume. Si vous disposez déjà d’un tableauvolumes
, ajoutez un nouveau volume au tableau.name
correspond à un identificateur pour le volume.- Pour
storageType
, utilisezAzureFile
pour SMB, ouNfsAzureFile
pour NFS. Cette valeur doit correspondre au type de stockage que vous avez défini dans l’environnement. - Pour
storageName
, utilisez le nom du stockage que vous avez défini dans l’environnement.
- Pour chaque conteneur du modèle où vous souhaitez monter le stockage Azure Files, définissez un montage de volume dans le tableau
volumeMounts
de la définition de conteneur.volumeName
correspond au nom défini dans le tableauvolumes
.mountPath
correspond au chemin dans le conteneur où monter le 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
- Ajoutez un tableau
Mettez à jour votre application conteneur à l’aide du fichier YAML.
az containerapp update --name <APP_NAME> --resource-group <RESOURCE_GROUP_NAME> \ --yaml app.yaml
Consultez la spécification YAML pour obtenir un exemple complet.
Les extraits de modèle ARM suivants montrent comment ajouter un partage Azure Files à un environnement Container Apps afin de l’utiliser dans une application conteneur.
Ajoutez une ressource enfant
storages
à l’environnement 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" } } } ] }
Mettez à jour la ressource d’application conteneur pour ajouter un volume et un montage de 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" } ] } } }
- Ajoutez un tableau
volumes
à la sectiontemplate
de votre définition d’application conteneur et définissez un volume. Si vous disposez déjà d’un tableauvolumes
, ajoutez un nouveau volume au tableau.name
correspond à un identificateur pour le volume.- Pour
storageType
, utilisezAzureFile
pour SMB, ouNfsAzureFile
pour NFS. Cette valeur doit correspondre au type de stockage que vous avez défini dans l’environnement. - Pour
storageName
, utilisez le nom du stockage que vous avez défini dans l’environnement.
- Pour chaque conteneur du modèle où vous souhaitez monter le stockage Azure Files, définissez un montage de volume dans le tableau
volumeMounts
de la définition de conteneur.volumeName
correspond au nom défini dans le tableauvolumes
.mountPath
correspond au chemin dans le conteneur où monter le volume.
- Ajoutez un tableau
Consultez la spécification de l’API de modèle ARM pour obtenir un exemple complet.
Pour configurer un montage de volume pour le stockage Azure Files dans le portail Azure, ajoutez un partage de fichiers à votre environnement Container Apps, puis ajoutez un montage de volume à votre application conteneur en créant une révision.
Dans le Portail Azure, accédez à votre instance d’application conteneur.
Sélectionnez Azure Files dans le menu de gauche.
Sélectionnez Ajouter.
Dans le menu contextuel Ajouter un partage de fichiers, entrez les informations suivantes :
- Nom : nom du partage de fichiers.
- Nom du compte de stockage : nom du compte de stockage contenant le partage de fichiers.
- Clé de compte de stockage : clé d’accès du compte de stockage.
- Partage de fichiers : nom du partage de fichiers.
- Mode d’accès : mode d’accès du partage de fichiers. Les valeurs valides sont « Lecture/écriture » et « Lecture seule ».
Sélectionnez Ajouter pour quitter le volet contextuel.
Sélectionnez Enregistrer pour valider les changements.
Accédez à votre application conteneur.
Sélectionnez Gestion des révisions dans le menu de gauche.
Sélectionnez Créer une nouvelle révision.
Sélectionnez le conteneur dans lequel vous souhaitez monter le volume.
Dans le volet contextuel Modifier un conteneur, sélectionnez l’onglet Montages de volume.
Sous la section Partages de fichiers, créez un volume avec les informations suivantes.
- Nom du partage de fichiers : partage de fichiers que vous avez ajouté.
- Chemin de montage : chemin d’accès absolu dans le conteneur pour monter le volume.
Sélectionnez Enregistrer pour enregistrer les changements et quitter le volet contextuel.
Sélectionnez Créer pour créer la nouvelle révision.