This project demonstrates the end-to-end deployment of a cloud-native monitoring application on AWS EKS. It showcases expertise in Kubernetes, Docker, AWS IAM, ECR, and troubleshooting real-world deployment challenges. The application monitors system resources using Python and Flask, providing a visual representation of CPU and memory usage.
- Cloud Provider: AWS (IAM, EKS, ECR)
- Containerization: Docker
- Orchestration: Kubernetes (kubectl, manifests)
- Backend: Python, Flask
- Monitoring:
psutil
(CPU & memory usage) - Automation: AWS CLI, Boto3
✅ Cloud-Native Deployment: Fully deployed on AWS EKS using Kubernetes manifests.
✅ Secure IAM Configuration: Least-privilege AWS IAM setup for secure access.
✅ Dockerized Application: Efficient containerization and registry management with AWS ECR.
✅ Optimized Node Group: Cost-effective Kubernetes cluster provisioning.
✅ CI/CD Ready: Potential integration with GitHub Actions for automated deployments.
✅ Troubleshooting & Debugging: Hands-on experience in diagnosing and resolving Kubernetes issues.
- Created an IAM User: Configured necessary permissions for AWS services.
- Configured IAM Locally:
aws configure
- Verified IAM Setup:
aws iam list-users
- Installed Kubernetes CLI:
sudo apt install -y kubectl
- Developed Python Monitoring App:
- Uses
psutil
to track CPU & memory. - Serves metrics using Flask (
render_template
forindex.html
).
- Uses
- Created Dockerfile (with dependency management and exposed port 5000).
- Built and Ran Docker Container:
docker build -t monitoring-app . docker run -p 5000:5000 monitoring-app
- Resolved Docker Issues:
- Fixed incorrect port binding warnings.
- Created an ECR Repository Using Boto3:
import boto3 client = boto3.client('ecr') response = client.create_repository(repositoryName='monitoring-app') print(response)
- Pushed Docker Image to ECR:
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <aws-account-id>.dkr.ecr.us-east-1.amazonaws.com docker tag monitoring-app:latest <aws-account-id>.dkr.ecr.us-east-1.amazonaws.com/monitoring-app:latest docker push <aws-account-id>.dkr.ecr.us-east-1.amazonaws.com/monitoring-app:latest
- Created an EKS Cluster:
eksctl create cluster --name cloud-native-cluster --region us-east-1
- Configured Node Group (Optimized Cost by Using
t2.micro
) - Deployed Kubernetes Manifest Files:
kubectl apply -f deployment.yaml
- Exposed the Application:
kubectl expose deployment monitoring-app --type=LoadBalancer --port=80 --target-port=5000
- Updated Kubernetes Cluster Config:
aws eks update-kubeconfig --name cloud-native-cluster
- Checked Service Status:
kubectl get svc
- Debugged Failures Using
kubectl describe
:kubectl describe pod <pod-name>
- Forwarded Service for External Access:
kubectl port-forward svc/monitoring-app 8080:5000
🚀 Successfully deployed a cloud-native monitoring application on AWS Kubernetes, accessible via port forwarding.
📌 Demonstrated proficiency in DevOps tools, cloud deployment, container orchestration, and troubleshooting real-world infrastructure issues.
🛠️ Open for improvements—potential to integrate CI/CD pipelines for automated deployment!
This project is licensed under the MIT License - see the LICENSE file for details.