Agence web » Actualités du digital » Comment connecter un volume EFS à un conteneur Docker ECS –

Comment connecter un volume EFS à un conteneur Docker ECS –

les-conteneurs-valent-ils-le-mal-de-tete-cloudsavvy-it-3358835

Elastic File System (EFS) d’AWS est un lecteur de stockage partagé qui peut être connecté à de nombreux serveurs distincts. C’est une paire parfaite avec Elastic Container Service (ECS) d’AWS, qui exécute des conteneurs Docker sans serveur dans des déploiements en cluster, et peut bénéficier d’un état partagé facile.

Pourquoi est-ce utile?

EFS est un service de stockage entièrement géré d’Amazon. Il s’agit d’un stockage en bloc partagé sans serveur qui peut être monté sur plusieurs serveurs. Cela le rend particulièrement utile en combinaison avec Docker, qui est généralement sans état.

Par exemple, vous pouvez l’utiliser pour héberger le contenu statique et le code de votre site Web, puis exécuter tous vos nœuds de travail sur ECS pour gérer la diffusion réelle de votre contenu. Cela contourne la restriction de ne pas stocker de données sur le disque, car le montage du volume est lié à un lecteur externe qui persiste dans les déploiements ECS.

Bien que vous puissiez exécuter des conteneurs Docker sur ECS avec des volumes locaux, disposer d’un seul volume partagé pour l’ensemble du déploiement peut être un outil très utile pour de nombreux déploiements.

Création d’un volume EFS

Pour configurer cela, vous devrez créer un système de fichiers EFS. C’est assez simple et peut être fait à partir de la console de gestion EFS, mais vous voudrez noter l’ID de volume car vous en aurez besoin pour travailler avec le volume.

Créez un nouveau système de fichiers:

Saisissez un nom, puis choisissez le VPC dans lequel se trouve votre cluster ECS.

Ensuite, vous pouvez noter l’ID du système de fichiers, car vous en aurez besoin plus tard.

Si vous avez besoin de précharger des données sur ce système de fichiers, ou simplement d’ajouter ou de modifier manuellement des fichiers dans votre volume EFS, vous pouvez le monter sur n’importe quelle instance EC2. Vous devrez installer amazon-efs-utils:

sudo yum install -y amazon-efs-utils

Et puis montez-le avec la commande suivante, en utilisant l’ID:

sudo mount -t efs fs-12345678:/ /mnt/efs

De cette façon, vous pouvez directement afficher et modifier le contenu de votre volume EFS comme s’il s’agissait d’un autre disque dur sur votre serveur. Vous voudrez vous assurer que nfs-utils est installé pour que tout fonctionne correctement.

Connexion à un déploiement ECS

Ensuite, vous devrez connecter ECS à ce volume. Créez une nouvelle définition de tâche dans la console de gestion ECS. Faites défiler vers le bas et sélectionnez «Configurer via JSON». Ensuite, remplacez la clé «volumes» vide par le JSON suivant, en ajoutant la clé «famille» à la fin:

"volumes": [
        {
            "name": "efs-demo",
            "host": null,
            "dockerVolumeConfiguration": {
                "autoprovision": true,
                "labels": null,
                "scope": "shared",
                "driver": "local",
                "driverOpts": {
                    "type": "nfs",
                    "device": ":/",
                    "o": "addr=fs-XXXXXX.efs.us-east-1.amazonaws.com,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"
                }
            }
        }
    ],
"family":"nginx",

Bien sûr, vous devrez remplacer fs-XXXXXX.efs.us-east-1.amazonaws.com avec l’adresse réelle de votre volume EFS. Vous devriez voir un nouveau volume:

ecs nouveau volume

Vous pouvez l’utiliser dans votre définition de conteneur comme point de montage. Sélectionnez «Ajouter un conteneur» (ou modifiez-en un existant), et sous «Stockage et journalisation», sélectionnez le volume nouvellement créé et spécifiez un chemin d’accès au conteneur.

ajouter un point de montage

Enregistrez la définition de tâche et lorsque vous lancez un cluster avec cette nouvelle définition, tous les conteneurs pourront accéder à votre système de fichiers partagé.

★★★★★