Enoncé TP 6

/images/k8s.jpeg

TP6 : Persistence des données

🇫🇷 Version Française

MongoDb deployment to statefulset

Redémarrer le pod mongo va supprimer toutes les données enregistrées…

Pour palier à ce soucis on va devoir utiliser un stockage persistent.

Mais premiérement on va transformer notre deployment MongoDb en statefulset cela va permettre de toujours rattacher le bon stockage persistent au bon pod créé par notre StatefulSet (en cas de réplicas de notre pod).

La déclaration d’un StatefulSet et celle d’un Deployment sont sensiblement les mêmes.

Une des différences est que le StatefulSet demande absolument un Service, il faut lui indiquer lequel utilisé.

En revanche il ne le créé pas tout seul il faut le créér pour lui.

(Vous devez supprimer l’application mongodb créé via le déploiement afin de n’avoir qu’une seule application mongodb)

PersistentVolumeClaim

Une fois l’application mongo passé en StatefulSet on va pouvoir lui attacher une stockage persistent via l’attribut volumeClaimTemplates du StatefulSet.

Quelques exigences à respecter :

  • Le stockage sera de 1 Giga
  • le mode d’accés au stockage sera ReadWriteOnce
  • le stockage sera monté dans le repertoire /data/db du container Mongo

Pour tester une fois que tout est monté correctement vous pouvez créer un user via votre frontend, puis venir redémarrer votre base Mongo (et vos backends qui vont perdre la connexion à la base) pour vérifier qu’un user déjà enregistré et bien encore utilisable malgré le reboot.

🇬🇧 English version

MongoDb deployment to statefulset

Restarting the mongo pod will delete all saved data…

To overcome this problem we will have to use persistent storage.

But first we will transform our MongoDb deployment into a statefulset, and this will allow us to always attach the correct persistent storage to the correct pod created by our StatefulSet (in the case of multiple replicas of our pod).

The declaration of a StatefulSet and that of a Deployment are essentially the same.

One of the differences is that the StatefulSet absolutely requests a Service, it must be indicated which one is used.

On the other hand, he doesn’t create it alone; we must create it for him.

(You must remove the mongodb app create with the deployment in order to have only one mongodb app running at the moment)

PersistentVolumeClaim

Once the mongo application has been switched to StatefulSet, we will be able to attach persistent storage to it via the volumeClaimTemplates attribute of the StatefulSet.

Some requirements to respect:

  • Storage will be 1 Giga
  • the storage access mode will be ReadWriteOnce
  • the storage will be mounted in the /data/db directory of the Mongo container

To test once everything is set up correctly you can create a user via your frontend, then restart your Mongo database (and your backends which will lose connection to the database) to check that the user is still registered and still usable despite the reboot.

Latest Posts