This project demonstrates a complete DevOps workflow using Docker and Kubernetes. It consists of a Flask-based backend blog application and a static frontend application, both containerized and deployed using Kubernetes on Minikube.
- Backend: Flask blog application (CRUD operations)
- Frontend: Static webpage served using NGINX
- Database: SQLite (used by Flask backend)
- Containerization: Docker
- Orchestration: Kubernetes (Minikube)
- Version Control: Git & GitHub
The Flask backend allows users to:
- Create new blog posts
- View all posts
- Edit existing posts
- Delete posts
- View posts stored in a SQLite database
The backend runs on port 5000 and binds to 0.0.0.0 for container access.
The frontend is a static web application served using NGINX. It displays a simple homepage and is exposed via a Kubernetes service.
- Backend and frontend are Dockerized using separate Dockerfiles
- Images are built and pushed to Docker Hub
- Backend deployed using a Kubernetes Deployment (replicas)
- Frontend deployed using a Kubernetes Deployment
- Both services are exposed using NodePort services
- Minikube is used as the local Kubernetes cluster
minikube start
**Deploy Backend**
kubectl apply -f backend-deployment.yaml
kubectl apply -f backend-service.yaml
**Deploy Frontend**
kubectl apply -f frontend-deployment.yaml
kubectl apply -f frontend-service.yaml
**Access Applications**
minikube service backend
minikube service frontend