Tutoriel : Créer un montage de volume Azure Files dans Azure Container Apps

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.

Dans ce tutoriel, vous allez apprendre à :

  • Créer un environnement Container Apps
  • Création d'un compte Azure Storage
  • Définir un partage de fichiers dans le compte de stockage
  • Relier l’environnement au partage de fichiers de stockage
  • Monter le partage de stockage dans un conteneur individuel
  • Vérifier le montage du stockage en affichant le journal d’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 présente 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.

Prérequis

  • Installez la dernière version d’Azure CLI.

Configurer l’environnement

Les commandes suivantes vous aident à définir des variables et à vérifier que votre extension Container Apps est à jour.

  1. Se connecter à Azure CLI.

    az login
    
  2. Configurez les variables d’environnement utilisées dans différentes commandes à suivre.

    RESOURCE_GROUP="my-container-apps-group"
    ENVIRONMENT_NAME="my-storage-environment"
    LOCATION="canadacentral"
    
  3. Vérifiez que vous disposez de la version la plus récente de l’extension Container Apps Azure CLI.

    az extension add -n containerapp --upgrade
    
  4. Enregistrez l’espace de noms Microsoft.App.

    az provider register --namespace Microsoft.App
    
  5. Enregistrez le fournisseur Microsoft.OperationalInsights sur l’espace de travail Azure Monitor Log Analytics si vous ne l’avez pas déjà utilisé.

    az provider register --namespace Microsoft.OperationalInsights
    

Créer un environnement

Les étapes suivantes permettent de créer un groupe de ressources et un environnement Container Apps.

  1. 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 « Opération réussie ».

    À la fin de ce tutoriel, vous pouvez éliminer le groupe de ressources pour supprimer tous les services créés au fil de cet article.

  2. Créez un environnement Container Apps.

    az containerapp env create \
      --name $ENVIRONMENT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location "$LOCATION" \
      --query "properties.provisioningState"
    

    Après sa création, la commande retourne un message « Opération réussie ».

    Les montages de stockage sont associés à un environnement Container Apps et configurés dans des applications conteneur individuelles.

Installer un compte de stockage

Ensuite, créez un compte de stockage et établissez un partage de fichiers à monter dans l’application conteneur.

  1. Définissez un nom de compte de stockage.

    Cette commande génère un suffixe aléatoire qui s’ajoute au nom du compte de stockage pour garantir l’unicité.

    STORAGE_ACCOUNT_NAME="myacastorageaccount$RANDOM"
    
  2. Création d’un compte 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
    

    Après sa création, la commande retourne un message « Opération réussie ».

  3. Définissez un nom de partage de fichiers.

    STORAGE_SHARE_NAME="myfileshare"
    
  4. Créez le partage de fichiers de 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 table
    
  5. Obtenez la clé du compte de stockage.

    STORAGE_ACCOUNT_KEY=`az storage account keys list -n $STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv`
    

    La clé de compte de stockage est nécessaire pour créer le lien de stockage dans votre environnement Container Apps.

  6. Dé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.

Créer le montage de stockage

Vous pouvez maintenant mettre à jour la configuration de l’application conteneur pour prendre en charge le montage de stockage.

  1. Créez le lien de stockage dans l’environnement.

    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
    

    Cette commande crée un lien entre l’environnement d’application conteneur et le partage de fichiers créé avec la commande az storage share-rm.

    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.

  2. Définissez le nom de l’application conteneur.

    CONTAINER_APP_NAME="my-container-app"
    
  3. 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.fqdn
    

    Cette commande affiche l’URL de votre nouvelle application conteneur.

  4. Copiez l’URL et collez-la dans votre navigateur web pour accéder au site web.

    Une fois la page chargée, vous verrez le message « Bienvenue dans nginx ! ». Laissez cet onglet de navigateur ouvert. Vous reviendrez au site web 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.

  5. Exportez la configuration de l’application conteneur.

    az containerapp show \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --output yaml > app.yaml
    

    Notes

    Bien que cette application n’ait pas de secrets, de nombreuses applications intègrent des secrets. 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 des secrets, vous pouvez supprimer la section secrets et vos secrets restent inchangés. Autrement, si vous devez modifier la valeur d’un secret, veillez à fournir à la fois name et value pour tous les secrets du fichier avant de tenter de mettre à jour l’application. L’omission d’un secret de la section secrets entraîne la suppression du secret.

  6. Ouvrez app.yaml dans un éditeur de code.

  7. Remplacez la volumes: null définition de la template section par une volumes: définition référençant le volume de stockage. La section du modèle doit ressembler à ce qui suit :

    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 nouvelle section template.volumes comprend les propriétés suivantes.

    Propriété Description
    name Cette valeur correspond au volume créé en appelant la commande az containerapp env storage set.
    storageName Cette valeur définit le nom utilisé par les conteneurs dans l’environnement pour accéder au volume de stockage.
    storageType Cette 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 volumes définit les volumes au niveau de l’application que votre conteneur d’application ou les conteneurs side-car peuvent référencer via une section volumeMounts associée à un conteneur.

  8. Ajoutez une section volumeMounts au conteneur nginx dans la section containers.

    containers:
      - image: nginx
        name: my-container-app
        volumeMounts:
        - volumeName: my-azure-file-volume
          mountPath: /var/log/nginx
    

    La nouvelle section volumeMounts comprend les propriétés suivantes :

    Propriété Description
    volumeName Cette valeur doit correspondre au nom défini dans la définition volumes.
    mountPath Cette valeur définit le chemin d’accès dans votre conteneur où le stockage est monté.
  9. 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 le stockage Azure à partir de votre conteneur. Utilisez les commandes suivantes pour observer le montage de stockage en cours de fonctionnement.

  1. 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_GROUP
    

    Cette 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.

  2. Accédez au dossier nginx /var/log/nginx.

    cd /var/log/nginx
    
  3. Revenez au navigateur, puis accédez au site web et actualisez la page plusieurs fois.

    Les requêtes adressées au site web créent une série d’entrées de flux de journal.

  4. Revenez à votre terminal et répertoriez les valeurs du dossier /var/log/nginx.

    Vous remarquerez que les fichiers access.log et error.log apparaissent dans le dossier. Ces fichiers sont écrits dans le montage Azure Files dans votre partage de stockage Azure créé aux étapes précédentes.

  5. Affichez le contenu du fichier access.log.

    cat access.log
    
  6. Quittez l’interpréteur de commandes interactif du conteneur pour revenir à votre session de terminal locale.

    exit
    
  7. À présent, vous pouvez afficher les fichiers dans le Portail Azure pour vérifier qu’ils existent dans votre compte de stockage Azure. Imprimez le nom de votre compte de stockage généré de manière aléatoire.

    echo $STORAGE_ACCOUNT_NAME
    
  8. Accédez au Portail Azure et ouvrez le compte de stockage créé au cours de cette procédure.

  9. Sous Stockage des données, sélectionnez Partages de fichiers.

  10. Sélectionnez myshare pour afficher 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 pendant cet article.

az group delete \
  --name $RESOURCE_GROUP

Étapes suivantes