From 6fd4b269cf7c8106f5d9608e217231d3a2cfe769 Mon Sep 17 00:00:00 2001
From: Jesus Galaz <jesusgalazr@icloud.com>
Date: Mon, 16 Dec 2024 00:56:24 +0100
Subject: [PATCH] fix(mongodb): Migrate MongoDB to StatefulSet for Improved
 Data Persistence and Stability

This MR updates the MongoDB deployment to use a StatefulSet instead of a Deployment. Key changes include:
	1.	Replaced Deployment with StatefulSet for better handling of stateful workloads.
	2.	Added volumeClaimTemplates for dynamic PVC provisioning, ensuring dedicated storage per pod.
	3.	Updated the MongoDB service to a Headless Service to provide stable DNS for the StatefulSet pods.

These changes ensure stable pod identities, reliable data persistence, and improved scalability for MongoDB.
---
 mongodb-deployment.yml | 28 ++++++++++------------------
 mongodb-service.yml    |  1 +
 2 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/mongodb-deployment.yml b/mongodb-deployment.yml
index 58fa9fd..bb557d4 100644
--- a/mongodb-deployment.yml
+++ b/mongodb-deployment.yml
@@ -1,25 +1,13 @@
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
-  name: mongo-pvc
-spec:
-  accessModes:
-    - ReadWriteOnce
-  resources:
-    requests:
-      storage: 1Gi
----
 apiVersion: apps/v1
-kind: Deployment
+kind: StatefulSet
 metadata:
   name: mongodb
-  labels:
-    app: mongodb
 spec:
   replicas: 1
   selector:
     matchLabels:
       app: mongodb
+  serviceName: mongodb
   template:
     metadata:
       labels:
@@ -38,7 +26,11 @@ spec:
           volumeMounts:
             - name: mongo-data
               mountPath: /data/db
-      volumes:
-        - name: mongo-data
-          persistentVolumeClaim:
-            claimName: mongo-pvc
+  volumeClaimTemplates:
+    - metadata:
+        name: mongo-data
+      spec:
+        accessModes: ["ReadWriteOnce"]
+        resources:
+          requests:
+            storage: 1Gi
diff --git a/mongodb-service.yml b/mongodb-service.yml
index 00a4a7d..976b64c 100644
--- a/mongodb-service.yml
+++ b/mongodb-service.yml
@@ -3,6 +3,7 @@ kind: Service
 metadata:
   name: mongodb
 spec:
+  clusterIP: None
   ports:
     - port: 27017
       targetPort: 27017
-- 
GitLab