An end-to-end DevOps project demonstrating Infrastructure as Code (Terraform), Configuration Management (Ansible), CI/CD (GitHub Actions), Containerization (Docker), Container Registry (Docker Hub), Kubernetes Orchestration (K3s), Ingress Routing (Traefik), and Cloud Deployment on AWS EC2.
The goal of this project was to deploy a full-stack MERN application using modern DevOps practices.
Instead of deploying the application manually, the complete infrastructure and deployment process was automated using DevOps tools.
This project demonstrates real-world DevOps workflows including:
- Infrastructure Provisioning
- Configuration Management
- Containerization
- CI/CD Automation
- Kubernetes Deployment
- Ingress Routing
- Cloud Hosting
Developer
↓
GitHub Repository
↓
GitHub Actions CI/CD
↓
Docker Hub
↓
Terraform
↓
AWS EC2
↓
Ansible
↓
K3s Kubernetes Cluster
↓
Traefik Ingress
↓
Frontend Pod
↓
Backend Pod
↓
MongoDB Atlas
- AWS EC2
- Terraform
- Ansible
- Docker
- Docker Hub
- GitHub Actions
- K3s Kubernetes
- Traefik Ingress Controller
- React.js
- Vite
- Tailwind CSS
- Node.js
- Express.js
- MongoDB Atlas
Deploying applications manually leads to:
- Configuration drift
- Manual errors
- Difficult scaling
- Slow deployments
- Inconsistent environments
To solve this problem, the entire deployment pipeline was automated.
Terraform was used to provision AWS infrastructure.
Resources Created:
- EC2 Instance
- Security Group
- SSH Key Pair
- Networking Configuration
terraform init
terraform plan
terraform applyThe infrastructure was created successfully on AWS.
Frontend and Backend applications were containerized using Docker.
Docker images were built and pushed to Docker Hub.
Images:
- ayusnath/ai-frontend
- ayusnath/ai-backend
Docker Hub was used as a centralized image registry.
A GitHub Actions workflow was created.
Workflow Responsibilities:
- Build Docker Images
- Push Images to Docker Hub
- Automate Deployment Pipeline
Pipeline Trigger:
on:
push:
branches:
- mainAnsible was used to automate server configuration.
Tasks Automated:
- Docker Verification
- Container Management
- Deployment Automation
K3s was installed on AWS EC2.
Why K3s?
- Lightweight
- Low Memory Usage
- Easy Setup
- Perfect for Cloud Learning Projects
Frontend and Backend applications were deployed as Pods.
Services were created for internal communication and external exposure.
Traefik was used as the Kubernetes Ingress Controller.
Responsibilities:
- Request Routing
- Load Balancing
- External Access
MongoDB Atlas was used as a managed cloud database.
Benefits:
- No database management overhead
- High availability
- Secure cloud storage
Application Flow:
Frontend
↓
Backend API
↓
MongoDB Atlas
The application was successfully deployed and accessed through Kubernetes Ingress.
Successfully implemented:
-
Terraform Infrastructure Provisioning
-
AWS EC2 Deployment
-
Docker Containerization
-
Docker Hub Integration
-
GitHub Actions CI/CD
-
Ansible Automation
-
K3s Kubernetes Cluster
-
Traefik Ingress Controller
-
MongoDB Atlas Integration
-
Full Stack Deployment
During this project I learned:
- Infrastructure as Code
- AWS Cloud Deployment
- Docker Containerization
- CI/CD Pipelines
- Kubernetes Concepts
- Ingress Controllers
- Configuration Management
- Production Deployment Workflow
- Custom Domain Integration
- HTTPS using Let's Encrypt
- Monitoring with Prometheus
- Grafana Dashboards
- Kubernetes HPA
- Multi-Node Kubernetes Cluster
- ArgoCD GitOps Deployment
Ayush Nath
GitHub: https://github.com/developergith
Linkedin: https://www.linkedin.com/in/ayush-nath-motichoor-7012102b2/
Medium.com https://medium.com/@ayushmotichoor













