AI / RAG Application Developer · Production chatbots and AI agents that ship · Multilingual support, grounded retrieval, no hallucinations · Ex-Samsung R&D · 15+ years of software engineering
by Md. Shihabuddin Sadi
Software Engineer · DevOps & Cloud Native Engineer · Aspiring Platform Engineer
October 26, 2025
This project showcases how I built a complete full-stack application (React frontend, Node.js backend, MongoDB database) inside a single-node Kubernetes cluster using Minikube.
It demonstrates real-world DevOps practices such as Deployments, Services, Ingress, ConfigMaps, Secrets, and Persistent Volumes, all tied together with a custom automation script that simplifies cluster management.
The goal was to replicate a production-like Kubernetes setup locally, helping me deepen my understanding of cloud-native application deployment and orchestration.
🔗 GitHub Repository: sadishihab/kubernetes-minikube-fullstack
Kubernetes · Minikube · Docker · Node.js · React · MongoDB · NGINX Ingress · ConfigMaps · Secrets · Persistent Volume · Shell scripting
The project demonstrates a three-tier architecture deployed in Minikube using the Docker driver:
┌────────────────────────────┐
│ Browser / User │
└──────────────┬─────────────┘
│
▼
┌──────────────────┐
│ Ingress │
│ (NGINX / Rules) │
└───────┬──────────┘
│
┌───────────────┴────────────────┐
│ │
▼ ▼
┌───────────────────┐ ┌───────────────────┐
│ Frontend Pod │ │ Backend Pod │
│ (React / Node.js) │◄──────────►│ (Node.js / API) │
│ ClusterIP SVC │ │ ClusterIP SVC │
└────────┬──────────┘ └────────┬──────────┘
│ │
│ ▼
│ ┌───────────────────┐
│ │ MongoDB Pod │
│ │ (Database Layer) │
│ │ Persistent Volume │
│ └────────┬──────────┘
│ │
│ ┌───────────────────┐
│ │ PVC + PV (Storage)│
│ └───────────────────┘
│
┌──────────────────────────┐
│ ConfigMaps & Secrets │
│ (Env vars, credentials) │
└──────────────────────────┘
├── frontend/ # Frontend (React)
├── backend/ # Backend (Node.js)
├── k8s/ # Kubernetes manifests
│ ├── deployments # Deployment YAMLs
│ ├── services # Service YAMLs
│ ├── ingress.yaml # Ingress config
│ ├── pvc.yaml # MongoDB PVC
│ └── configmaps-secrets # ConfigMaps & Secrets
└── README.md
Start Minikube
minikube start --driver=docker
eval $(minikube docker-env)
Apply Configurations
kubectl apply -f k8s/app-configmap.yaml
kubectl apply -f k8s/app-secret.yaml
kubectl apply -f k8s/mongo-pv.yaml
kubectl apply -f k8s/mongo-pvc.yaml
kubectl apply -f k8s/mongo.yaml
kubectl apply -f k8s/backend.yaml
kubectl apply -f k8s/frontend.yaml
kubectl apply -f k8s/ingress.yaml
Verify
kubectl get pods
kubectl get svc
kubectl get ingress
Access the App
minikube tunnel
Then open the browser and visit the Ingress host URL.
To simplify cluster operations, I created a script that can:
Examples:
./k8s-manage.sh --stop
./k8s-manage.sh --start
./k8s-manage.sh --save
./k8s-manage.sh --restore
❌ Image not updating after rebuild
If you rebuild Docker images but pods still use the old one:
eval $(minikube docker-env)
kubectl rollout restart deployment <deployment-name>
❌ Ingress not working
Ensure Ingress addon is enabled:
minikube addons enable ingress
❌ MongoDB Pod in CrashLoopBackOff
Check logs:
kubectl logs <pod-name>
Possible causes:
❌ Port not accessible
Use:
minikube tunnel
kubectl get ingress
Then open the listed ADDRESS in your browser.
This project is open-source and available under the MIT License
tags: Kubernetes - Minikube - Docker - Node.js - React - MongoDB - Cloud-Native - CI/CD