NFSv3 Azure avec Docker
Introduction
Il y a quelques semaines, Azure a annoncé la disponibilité générale (GA) de l’utilisation des blobs avec le protocole NFS v3.Dans cet article, nous allons voir comment utiliser cette fonctionnalité pour monter un Azure Blob Storage en tant que volume Docker sous un point de montage en utilisant le protocole NFS v3.
1. NFS dans Azure
La premier chose à faire est de créer notre storage account en NFSv3. A savoir qu’il faut impérativement activer la fonctionnalité au moment de la création de notre SA (Storage Account).
Pour des raisons de sécurité et pour se rapprocher au maximum d’une PRD nous allons le deployer en “private” pour qu’il soit uniquement accessible depuis notre subnet Azure.
On pensera bien à ajouter notre subnet pour qu’il soit autorisé à consommer notre storage en NFS
Ce qui nous donne en résumé ceci :
Maintenant que notre storage account a été créer nous allons ajouter notre container :
Attention par défaut, l’option n’est pas root squash. Ce qui nous donne la configuration suivante :
NFS in IaaS
Maintenant que notre partage NFS est disponible il nous reste plus qu’a le monter sur nos VMs avec la commande suivante :
mount -o sec=sys,vers=3,nolock,proto=tcp devnfs.blob.core.windows.net:/devnfs/docker /mnt/test
on oubliera pas d’installer les outils au préalable si ce n’est pas déjà fait :
sudo yum install nfs-utils
NFS in docker
Maintenant que nous avons tester que notre NFS fonctionne nous allons le monter dans notre container
Exemple d’un docker-compose.yml avec un volume NFS :
Si vous êtes sur centos est que vous rencontrez des problématiques autour de “cgroup”. Example
“WARNING: Your kernel does not support cgroup swap limit.”
Vous devez modifier votre grub de la facon suivante :
vi /etc/default/grub
Et on y ajoute la ligne suivante :
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
Un petit sudo reboot est tout devrait rentrer dans l’ordre.
Sinon sans le reboot :
service docker stop
service containerd stop
cgroupfs-umount
cgroupfs-mount
service containerd start
service docker start
Conclusion
Azure Blob Storage est une solution qui offre une option peu coûteuse pour stocker des données dans le cloud. Attention tout de même le stockage comporte certaines limitations. L’utilisation de NFS sur le stockage Blob fonctionnera pour de nombreuses charges de travail qui ne nécessitent pas d’IOPS (opérations d’entrée/sortie par seconde). Pour des performances accrues on envisagera plus d’utiliser Azure NetApp.
Vous trouverez plus d’information sur la sécurité des blob ici : https://docs.microsoft.com/en-us/azure/storage/blobs/security-recommendations#networking
Un article sur les performances : https://docs.microsoft.com/en-us/azure/storage/blobs/network-file-system-protocol-support-performance
Terraform
Vous trouverez un exemple de code TF pour créer notre storage account NFS en privée sur le blog d’Alexandre COMET. Alexandre COMET
Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/InfraAtHome