RefineOps is a fully automated, cloud-native CI/CD pipeline implemented using AWS EC2, Jenkins, Docker, DockerHub, Kubernetes (k3s), Prometheus, and Grafana. This project demonstrates real-world DevOps practices including continuous integration, continuous deployment, containerization, orchestration, and monitoring.
The goal of RefineOps is to automate application delivery through:
- Automated CI/CD with Jenkins
- GitHub Webhook triggered builds
- Docker image creation and vulnerability scanning
- Image push to DockerHub
- Kubernetes deployment via k3s
- Real-time monitoring with Prometheus & Grafana
This project was developed as part of an internship to demonstrate end-to-end DevOps implementation on cloud infrastructure.
GitHub β Jenkins (EC2) β Docker Build β Trivy Scan β DockerHub
β
Kubernetes (k3s)
β
Prometheus β Grafana
- π Automated CI/CD Pipeline
- π³ Docker-based Application Deployment
- π Trivy Image Security Scanning
- βΈοΈ Kubernetes (k3s) Orchestration
- π‘ GitHub Webhook Integration
- π Prometheus & Grafana Monitoring
- π Rolling Updates on Kubernetes
| Category | Tools |
|---|---|
| Cloud | AWS EC2 |
| CI/CD | Jenkins |
| Version Control | GitHub |
| Containerization | Docker |
| Image Registry | DockerHub |
| Orchestration | Kubernetes (k3s) |
| Monitoring | Prometheus, Grafana |
| Security | Trivy |
RefineOps/
βββ Jenkinsfile
βββ Dockerfile
βββ sonar-project.properties
βββ k8s/
β βββ deployment.yaml
β βββ service.yaml
βββ monitoring/
β βββ prometheus.yml
β βββ datasources/
βββ scripts/
β βββ deploy.sh
βββ README.md
-
Code Push to GitHub
-
GitHub Webhook triggers Jenkins
-
Jenkins Pipeline Stages:
- Checkout source code
- Build Docker image
- Run Trivy security scan
- Push image to DockerHub
- Deploy to Kubernetes
- Notify via email/Slack (optional)
-
Kubernetes pulls latest image
-
Application becomes live
-
Prometheus collects metrics
-
Grafana displays dashboards
Pulls latest code from GitHub main branch.
Builds the Docker image using Dockerfile.
Runs Trivy vulnerability scan on the Docker image.
Pushes secure image to DockerHub registry.
Applies Kubernetes manifests using:
kubectl apply -f k8s/
Sends result notifications.
Defines replica sets, containers, and rolling updates.
Exposes app externally using NodePort 30080.
kubectl get pods
kubectl get svc
kubectl describe pod <pod-name>
http://<EC2-Public-IP>:30080
- Scrapes node & pod metrics
- Runs on port 9090
-
Visualization tool
-
Runs on port 3000
-
Datasource: Prometheus
-
Dashboards include:
- Node Exporter Full
- Cluster Metrics
- Pod/Container Performance
| Week | Work Summary |
|---|---|
| Week 1 | AWS setup, EC2 configuration, dependency installation |
| Week 2 | Jenkins installation, webhook setup |
| Week 3 | Dockerization, Trivy scan, DockerHub integration |
| Week 4 | Kubernetes (k3s) installation, first deployment |
| Week 5 | Full pipeline automation to Kubernetes |
| Week 6 | Monitoring setup with Prometheus and Grafana, documentation |
git clone https://github.com/tanvirmulla11/RefineOps.git
cd RefineOpsdocker build -t <your-image-name> .kubectl apply -f k8s/http://<EC2-Public-IP>:30080- CI/CD pipeline successfully automated
- Application deployed on Kubernetes via Jenkins
- Monitoring dashboards fully functional
- Vulnerability-free Docker images
- Cloud-hosted end-to-end deployment
Special thanks to mentors and the internship program for guidance and support throughout this project.
This project is intended strictly for educational & internship demonstration purposes.