Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Apprenez à écrire dans un stockage permanent dans une application conteneur à l’aide d’un montage de stockage Azure Files. Pour plus d’informations sur les montages de stockage, consultez Utiliser des montages de stockage dans Azure Container Apps.
Ce tutoriel utilise une authentification par identité managée (preview), que nous recommandons pour les nouveaux montages de fichiers SMB. L’identité gérée appartient à l’environnement Container Apps. Vous n’avez pas besoin de récupérer, stocker ou effectuer la rotation d’une clé de compte de stockage pour monter le partage.
Dans ce tutoriel, vous allez apprendre à :
- Créer un environnement Container Apps
- Créer un compte de stockage Azure
- Définir un partage de fichiers dans le compte de stockage
- Accorder à l’identité gérée de l’environnement un accès au partage de fichiers
- Lier l’environnement au partage de fichiers de stockage
- Monter le partage de stockage dans un conteneur individuel
- Vérifier le montage du système de stockage en vérifiant le journal des accès au site web
Remarque
Azure Container Apps prend en charge le montage de partages de fichiers à l’aide de protocoles SMB et NFS. Ce tutoriel montre le montage d’un partage Azure Files à l’aide du protocole SMB. Pour en savoir plus sur le montage de partages NFS, consultez Utiliser des montages de stockage dans Azure Container Apps.
Conditions préalables
- Installez la dernière version d’Azure CLI.
- Utilisez un abonnement Azure avec les autorisations nécessaires pour créer des ressources et attribuer des rôles de contrôle d’accès en fonction du rôle Azure (Azure RBAC). Pour attribuer des rôles, il faut
Microsoft.Authorization/roleAssignments/writeune autorisation au niveau du compte de stockage.
Configurer l’environnement
Les commandes suivantes définissent des variables d’environnement et vérifient que votre extension Container Apps est à jour.
Se connecter à Azure CLI.
az loginConfigurez les variables d’environnement utilisées dans différentes commandes à suivre.
RESOURCE_GROUP="my-container-apps-group" ENVIRONMENT_NAME="my-storage-environment" LOCATION="canadacentral"Vérifiez que vous disposez de la dernière version de l’extension Azure CLI Container Apps.
az extension add -n containerapp --upgradeEnregistrez l’espace de noms
Microsoft.App.az provider register --namespace Microsoft.AppEnregistrez le fournisseur
Microsoft.OperationalInsightspour l’espace de travail Log Analytics Azure Monitor s'il n'a pas encore été utilisé.az provider register --namespace Microsoft.OperationalInsights
Créer un environnement
Les étapes suivantes créent un groupe de ressources et un environnement Container Apps.
Créez un groupe de ressources.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"Après sa création, la commande retourne un message « Succeeded ».
À la fin de ce tutoriel, vous pouvez supprimer le groupe de ressources pour supprimer tous les services créés pendant cet article.
Créez un environnement Container Apps.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location "$LOCATION" \ --mi-system-assigned \ --query "properties.provisioningState"Après sa création, la commande retourne un message « Opération réussie ».
Utilisez le drapeau
--mi-system-assignedpour activer l’identité gérée assignée par le système de l’environnement. Aux étapes suivantes, vous accordez à cette identité l’accès au partage de fichiers.Les montages de stockage sont associés à un environnement Container Apps et configurés dans des applications conteneur individuelles.
Configurer un compte de stockage
Ensuite, créez un compte de stockage et établissez un partage de fichiers à monter sur l’application conteneur.
Définissez un nom de compte de stockage.
Cette commande génère un suffixe aléatoire au nom du compte de stockage pour garantir l’unicité.
STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"Créez un compte de stockage Azure.
az storage account create \ --resource-group $RESOURCE_GROUP \ --name $STORAGE_ACCOUNT_NAME \ --location "$LOCATION" \ --kind StorageV2 \ --sku Standard_LRS \ --enable-large-file-share \ --enable-smb-oauth true \ --query provisioningStateUne fois créée, la commande renvoie un message « Succeeded ».
Le
--enable-smb-oauth truedrapeau active l’Identité Gérée pour SMB (SMBOAuth) sur le compte de stockage. Si vous utilisez un compte de stockage existant, activez ce réglage avant de créer le montage du volume. Pour les instructions, voir Configurer la propriété d’accès de l’identité gérée sur votre compte de stockage.Les paramètres de sécurité SMB du compte de stockage doivent également permettre l’authentification Kerberos. Si vous utilisez un profil de sécurité SMB personnalisé, consultez les paramètres de sécurité SMB.
Définissez un nom de partage de fichiers.
STORAGE_SHARE_NAME="myfileshare"Créez un partage de fichiers pour le service stockage Azure.
az storage share-rm create \ --resource-group $RESOURCE_GROUP \ --storage-account $STORAGE_ACCOUNT_NAME \ --name $STORAGE_SHARE_NAME \ --quota 1024 \ --enabled-protocols SMB \ --output tableDéfinissez le nom du montage de stockage.
STORAGE_MOUNT_NAME="mystoragemount"Cette valeur est le nom utilisé pour définir le lien de montage de stockage de votre environnement Container Apps vers votre compte stockage Azure.
Accordez à l’identité gérée l’accès
Attribuer le rôle Storage File Data SMB MI Admin à l’identité gérée de l’environnement au niveau du périmètre du compte de stockage. Ce rôle autorise l’identité à accéder aux fichiers et répertoires dans le partage SMB.
ENVIRONMENT_PRINCIPAL_ID=$(az containerapp env show \
--name $ENVIRONMENT_NAME \
--resource-group $RESOURCE_GROUP \
--query identity.principalId \
--output tsv)
STORAGE_ACCOUNT_ID=$(az storage account show \
--name $STORAGE_ACCOUNT_NAME \
--resource-group $RESOURCE_GROUP \
--query id \
--output tsv)
az role assignment create \
--assignee-object-id "$ENVIRONMENT_PRINCIPAL_ID" \
--assignee-principal-type ServicePrincipal \
--role "Storage File Data SMB MI Admin" \
--scope "$STORAGE_ACCOUNT_ID"
Prévoyez le temps nécessaire pour que l’attribution du rôle se propage avant de créer le point de montage de stockage. Pour attribuer le rôle dans le portail Azure à la place, voir Assigner un rôle RBAC intégré à l’identité gérée.
Créer le montage de stockage
Vous pouvez maintenant mettre à jour la configuration de l’application conteneur pour prendre en charge le montage du stockage.
Créez le lien de stockage dans l’environnement.
az containerapp env storage set \ --access-mode ReadWrite \ --storage-type AzureFile \ --azure-file-account-name $STORAGE_ACCOUNT_NAME \ --azure-file-identity system \ --azure-file-share-name $STORAGE_SHARE_NAME \ --storage-name $STORAGE_MOUNT_NAME \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --output tableCette commande crée un lien entre l’environnement Container Apps et le partage de fichiers créé avec la commande
az storage share-rm. L'option--azure-file-identity systempermet de s'authentifier auprès d'Azure Files en utilisant l'identité managée attribuée au système de l'environnement.Pour une identité gérée attribuée par l’utilisateur, attribuez l’identité à l’environnement et utilisez son identifiant de ressource complet au lieu de
system. L’authentification des clés de compte de stockage reste prise en charge comme alternative. Ne pas combiner--azure-file-identityavec--azure-file-account-keyou--azure-file-key-vault-secret-url. Pour des exemples, voir Utiliser des montages de stockage dans Azure Container Apps.Maintenant que le compte de stockage et l’environnement sont liés, vous pouvez créer une application conteneur qui utilise le montage de stockage.
Définissez le nom de l’application conteneur.
CONTAINER_APP_NAME="my-container-app"Créez l’application conteneur.
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.fqdnCette commande affiche l’URL de votre nouvelle application conteneur.
Copiez l’URL et collez-la dans votre navigateur web pour accéder au site web.
Une fois la page chargée, le message « Bienvenue dans nginx ! » s’affiche. Maintenez cet onglet de navigateur ouvert. Vous reviendrez sur le site Internet pendant les étapes de vérification du montage de stockage.
Maintenant que vous avez confirmé que l’application conteneur est configurée, vous pouvez mettre à jour l’application avec une définition de montage de stockage.
Exportez la configuration de l’application conteneur.
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --output yaml > app.yamlRemarque
Bien que cette application n’ait pas de secrets, de nombreuses applications font des secrets de fonctionnalités. Par défaut, lorsque vous exportez la configuration d’une application, les valeurs des secrets ne sont pas incluses dans le YAML généré.
Si vous n’avez pas besoin de modifier les valeurs de secret, vous pouvez supprimer la
secretssection et vos secrets restent inchangés. Si vous devez modifier la valeur d’un secret, veillez à fournirnameetvaluepour tous les secrets dans le fichier avant de tenter de mettre à jour l’application. Omettre un secret de la sectionsecretssupprime le secret.Ouvrez app.yaml dans un éditeur de code.
Remplacez la
volumes: nulldéfinition dans latemplatesection par unevolumes:définition référençant le volume de stockage. La section de modèle doit ressembler à ce qui suit :template: containers: - image: nginx imageType: ContainerImage name: my-container-app resources: cpu: 0.5 ephemeralStorage: 2Gi memory: 1Gi volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginx initContainers: null revisionSuffix: '' scale: cooldownPeriod: 300 maxReplicas: 1 minReplicas: 1 pollingInterval: 30 rules: null serviceBinds: null terminationGracePeriodSeconds: null volumes: - name: my-azure-file-volume storageName: mystoragemount storageType: AzureFileLa nouvelle
template.volumessection inclut les propriétés suivantes.Propriété Descriptif nameCette valeur identifie le volume au niveau de l’application et est référencée par volumeNamedans le montage de volume du conteneur.storageNameCette valeur correspond au nom de définition de stockage créé par l’appel de la az containerapp env storage setcommande.storageTypeCette valeur détermine le type de volume de stockage défini pour l’environnement. Dans ce cas, un montage Azure Files est déclaré. La section
volumesdéfinit les volumes au niveau de l’application que votre conteneur d’applications ou les conteneurs side-car peuvent référencer via une sectionvolumeMountsassociée à un conteneur.L’authentification par identité gérée ne modifie pas la configuration des volumes au niveau de l’application. Continuez à utiliser
storageType: AzureFilepour les montages SMB.Ajoutez une
volumeMountssection aunginxconteneur dans lacontainerssection.containers: - image: nginx name: my-container-app volumeMounts: - volumeName: my-azure-file-volume mountPath: /var/log/nginxLa nouvelle
volumeMountssection inclut les propriétés suivantes :Propriété Descriptif volumeNameCette valeur doit correspondre au nom défini dans la volumesdéfinition.mountPathCette valeur définit le chemin d’accès dans votre conteneur où le stockage est monté. Mettez à jour l’application conteneur avec la nouvelle configuration de montage de stockage.
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --yaml app.yaml \ --output table
Vérifier le montage de stockage
Maintenant que le montage de stockage est établi, vous pouvez manipuler des fichiers dans Stockage Azure à partir de votre conteneur. Utilisez les commandes suivantes pour observer le montage de stockage au travail.
Ouvrez un interpréteur de commandes interactif à l’intérieur de l’application conteneur pour exécuter des commandes à l’intérieur du conteneur en cours d’exécution.
az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUPCette commande peut prendre un moment pour ouvrir l’interpréteur de commandes distant. Une fois l’interpréteur de commandes prêt, vous pouvez interagir avec le montage de stockage via les commandes du système de fichiers. Pour plus d’informations, consultez Se connecter à une console de conteneur dans Azure Container Apps.
Accédez au dossier nginx /var/log/nginx .
cd /var/log/nginxRevenez au navigateur et accédez au site web et actualisez la page quelques fois.
Les requêtes adressées au site web créent une série d’entrées de flux de journal.
Revenez à votre terminal et listez les valeurs du
/var/log/nginxdossier.lsNotez comment les fichiers access.log et error.log apparaissent dans ce dossier. Ces fichiers sont écrits dans le montage Azure Files dans votre partage de stockage Azure créé aux étapes précédentes.
Affichez le contenu du fichier access.log .
cat access.logQuittez l’interpréteur de commandes interactif du conteneur pour revenir à votre session de terminal locale.
exitÀ présent, vous pouvez afficher les fichiers dans le portail Azure pour vérifier qu’ils existent dans votre compte stockage Azure. Imprimez le nom de votre compte de stockage généré de manière aléatoire.
echo $STORAGE_ACCOUNT_NAMEAccédez au portail Azure et ouvrez le compte de stockage créé dans cette procédure.
Sous Stockage de données , sélectionnez Partages de fichiers.
Sélectionnez myfileshare pour voir les fichiers access.log et error.log .
Nettoyer les ressources
Si vous ne souhaitez pas continuer à utiliser cette application, exécutez la commande suivante pour supprimer le groupe de ressources ainsi que toutes les ressources créées dans cet article.
az group delete \
--name $RESOURCE_GROUP