1-
21# 🌌 Solar System - Enterprise DevOps Application
32
4- A comprehensive Node.js web application demonstrating enterprise-grade DevOps practices with complete CI/CD pipeline, Infrastructure as Code, and GitOps implementation.
3+ A comprehensive Node.js web application demonstrating enterprise-grade DevOps practices with complete CI/CD pipeline, Infrastructure as Code, GitOps implementation, and comprehensive monitoring .
54
65[ ![ Node.js CI] ( https://github.com/KarimZakzouk/Graduation-Project-Devops/actions/workflows/ci.yml/badge.svg )] ( https://github.com/KarimZakzouk/Graduation-Project-Devops/actions/workflows/ci.yml )
76[ ![ Docker Build] ( https://github.com/KarimZakzouk/Graduation-Project-Devops/actions/workflows/docker.yml/badge.svg )] ( https://github.com/KarimZakzouk/Graduation-Project-Devops/actions/workflows/docker.yml )
@@ -17,7 +16,8 @@ This project showcases a **Solar System visualization web application** built wi
1716- ** Node.js/Express backend** with MongoDB integration
1817- ** Complete CI/CD pipeline** with GitHub Actions
1918- ** Infrastructure as Code** using Terraform and AWS EKS
20- - ** GitOps deployment** with ArgoCD
19+ - ** GitOps deployment** with ArgoCD for automated application delivery
20+ - ** Comprehensive monitoring** with Prometheus and Grafana
2121- ** Containerized deployment** with Docker and Kubernetes
2222- ** Multi-registry container support** (Docker Hub + GitHub Container Registry)
2323
@@ -34,13 +34,14 @@ This project showcases a **Solar System visualization web application** built wi
3434 ▼
3535┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
3636│ Terraform │───▶│ AWS EKS │───▶│ ArgoCD │
37- │ Infrastructure │ │ Kubernetes │ │ GitOps │
37+ │ Infrastructure │ │ Kubernetes │ │ GitOps Deploy │
3838└─────────────────┘ └─────────────────┘ └─────────────────┘
3939 │
4040 ▼
4141┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
42- │ MongoDB │───▶│ Solar System │───▶│ LoadBalancer │
43- │ Database │ │ Application │ │ Public Access │
42+ │ Prometheus │───▶│ Solar System │───▶│ LoadBalancer │
43+ │ + Grafana │ │ Application │ │ Public Access │
44+ │ Monitoring │ │ + MongoDB │ │ │
4445└─────────────────┘ └─────────────────┘ └─────────────────┘
4546```
4647
@@ -60,9 +61,12 @@ This project showcases a **Solar System visualization web application** built wi
6061- ** Cloud Provider** : AWS (EKS, VPC, Load Balancers, S3)
6162- ** Infrastructure as Code** : Terraform with modular design
6263- ** CI/CD** : GitHub Actions with workflow orchestration
63- - ** GitOps** : ArgoCD for automated deployments
64+ - ** GitOps** : ArgoCD for automated deployments and drift detection
6465- ** Container Registry** : Docker Hub + GitHub Container Registry
65- - ** Monitoring** : Built-in health checks and logging
66+ - ** Monitoring & Observability** :
67+ - ** Prometheus** : Metrics collection and alerting
68+ - ** Grafana** : Visualization dashboards and analytics
69+ - Built-in health checks and structured logging
6670
6771---
6872
@@ -93,7 +97,18 @@ This project showcases a **Solar System visualization web application** built wi
9397│ ├── 5-outputs.tf # Output values
9498│ └── modules/
9599│ ├── vpc/ # VPC module
96- │ └── eks/ # EKS cluster module
100+ │ ├── eks/ # EKS cluster module
101+ │ ├── monitoring/ # Prometheus & Grafana setup
102+ │ └── argocd/ # ArgoCD installation
103+ │
104+ ├── 📊 Monitoring & GitOps
105+ │ ├── monitoring/
106+ │ │ ├── prometheus/ # Prometheus configuration
107+ │ │ ├── grafana/ # Grafana dashboards
108+ │ │ └── alerting/ # Alert rules & notifications
109+ │ └── argocd/
110+ │ ├── applications/ # ArgoCD application definitions
111+ │ └── projects/ # ArgoCD project configurations
97112│
98113├── 🔄 CI/CD Workflows
99114│ └── .github/workflows/
@@ -121,7 +136,7 @@ This project showcases a **Solar System visualization web application** built wi
121136### ** 2. Continuous Deployment (CD)**
122137- ** Multi-Registry Push** : Docker Hub + GitHub Container Registry
123138- ** Infrastructure Deployment** : Terraform-managed AWS EKS
124- - ** GitOps Deployment** : ArgoCD automated sync
139+ - ** GitOps Deployment** : ArgoCD automated sync and self-healing
125140- ** Environment Promotion** : Automated deployment pipeline
126141
127142### ** 3. GitHub Actions Workflows**
@@ -145,6 +160,7 @@ This project showcases a **Solar System visualization web application** built wi
145160- Infrastructure planning & deployment
146161- State management with S3 backend
147162- AWS EKS cluster provisioning
163+ - ArgoCD and monitoring stack deployment
148164
149165#### ** Deploy Workflow** (` deploy.yml ` )
150166- Kubernetes secret management
@@ -153,220 +169,59 @@ This project showcases a **Solar System visualization web application** built wi
153169
154170---
155171
156- ## ☸️ Kubernetes Infrastructure
157-
158- ### ** AWS EKS Cluster**
159- - ** Cluster Version** : Kubernetes 1.30
160- - ** Node Groups** : Auto-scaling worker nodes
161- - ** Networking** : VPC with public/private subnets
162- - ** Security** : RBAC, Security Groups, IAM roles
163-
164- ### ** Application Deployment**
165- - ** Helm Charts** : Templated Kubernetes manifests
166- - ** ConfigMaps & Secrets** : Environment configuration
167- - ** Services** : LoadBalancer for external access
168- - ** Health Checks** : Readiness and liveness probes
169-
170- ### ** GitOps with ArgoCD**
171- - ** Automated Sync** : Git-based deployments
172- - ** Self-Healing** : Automatic drift correction
173- - ** Rollback** : Easy revert capabilities
174- - ** UI Dashboard** : Visual deployment management
172+ ## 🎯 GitOps with ArgoCD
175173
176- ---
174+ ### ** ArgoCD Implementation**
175+ - ** Declarative GitOps** : Git repository as single source of truth
176+ - ** Automated Sync** : Continuous monitoring and deployment of changes
177+ - ** Self-Healing** : Automatic correction of configuration drift
178+ - ** Rollback Capabilities** : Easy revert to previous application states
179+ - ** Multi-Environment Support** : Separate configurations for dev/staging/prod
180+ - ** RBAC Integration** : Role-based access control for team collaboration
177181
178- ## � Getting Started
179-
180- ### ** Prerequisites**
181- - AWS Account with appropriate permissions
182- - Docker Desktop
183- - Node.js 18+
184- - Git
185-
186- ### ** Local Development**
187-
188- 1 . ** Clone the repository**
189- ``` bash
190- git clone https://github.com/KarimZakzouk/Graduation-Project-Devops.git
191- cd Graduation-Project-Devops
192- ```
193-
194- 2 . ** Install dependencies**
195- ``` bash
196- npm install
197- ```
198-
199- 3 . ** Run tests**
200- ``` bash
201- npm test
202- npm run coverage
203- ```
204-
205- 4 . ** Start the application**
206- ``` bash
207- npm start
208- # Application available at http://localhost:3000
209- ```
210-
211- ### ** Docker Development**
212-
213- 1 . ** Build the image**
214- ``` bash
215- docker build -t solar-system:latest .
216- ```
217-
218- 2 . ** Run the container**
219- ``` bash
220- docker run -p 3000:3000 \
221- -e MONGO_URI=" your-mongo-uri" \
222- -e MONGO_USERNAME=" your-username" \
223- -e MONGO_PASSWORD=" your-password" \
224- solar-system:latest
225- ```
182+ ### ** ArgoCD Features Used**
183+ - ** Application Sets** : Manage multiple applications across environments
184+ - ** Sync Policies** : Automated and manual sync strategies
185+ - ** Health Checks** : Application health monitoring and reporting
186+ - ** Resource Hooks** : Pre/post deployment hooks for complex workflows
187+ - ** Notifications** : Integration with Slack/email for deployment status
226188
227189---
228190
229- ## 🔧 Production Deployment
230-
231- ### ** Required Secrets**
232- Configure the following in GitHub Secrets:
233-
234- ``` bash
235- # AWS Credentials
236- AWS_ACCESS_KEY_ID
237- AWS_SECRET_ACCESS_KEY
238-
239- # Container Registry
240- DOCKER_USERNAME
241- DOCKER_TOKEN
242-
243- # Database
244- MONGO_URI
245- MONGO_USERNAME
246- MONGO_PASSWORD
247- ```
248-
249- ### ** Deployment Steps**
191+ ## 📊 Monitoring & Observability
250192
251- 1 . ** Trigger Main Pipeline**
252- - Go to Actions → Solar System - Main Pipeline
253- - Click "Run workflow"
254- - Configure options as needed
193+ ### ** Prometheus Stack**
194+ - ** Metrics Collection** : Application, infrastructure, and Kubernetes metrics
195+ - ** Service Discovery** : Automatic discovery of monitoring targets
196+ - ** Alerting Rules** : Custom alerts for application and infrastructure health
197+ - ** Data Retention** : Configurable metric storage and cleanup policies
198+ - ** High Availability** : Multi-replica Prometheus setup with persistent storage
255199
256- 2 . ** Monitor Deployment**
257- - Infrastructure: Check Terraform workflow
258- - Application: Check ArgoCD dashboard
259- - Access: Get LoadBalancer URL from AWS console
200+ ### ** Grafana Dashboards**
201+ - ** Application Metrics** : Request rates, response times, error rates
202+ - ** Infrastructure Monitoring** : Node CPU, memory, disk, and network usage
203+ - ** Kubernetes Cluster** : Pod status, resource utilization, cluster health
204+ - ** Business Metrics** : User interactions, feature usage analytics
205+ - ** Custom Dashboards** : Solar system specific metrics and visualizations
260206
261- ### ** Manual Deployment**
207+ ### ** Key Monitoring Features**
208+ - ** Real-time Dashboards** : Live metrics visualization
209+ - ** Alerting** : Slack/email notifications for critical issues
210+ - ** Log Aggregation** : Centralized logging with structured format
211+ - ** Distributed Tracing** : Request flow tracking across services
212+ - ** SLA Monitoring** : Service level objectives tracking
262213
263- ``` bash
264- # 1. Deploy Infrastructure
265- cd Terraform
266- terraform init
267- terraform plan
268- terraform apply
269-
270- # 2. Configure kubectl
271- aws eks update-kubeconfig --name otel-cluster --region us-east-1
272-
273- # 3. Deploy Application (handled by ArgoCD automatically)
274- kubectl get applications -n argocd
275- ```
276214
277215---
278216
279- ## 🔍 Monitoring & Operations
280-
281- ### ** Application Monitoring**
282- - Health check endpoints
283- - Application logs via kubectl
284- - Performance metrics
285-
286- ### ** Infrastructure Monitoring**
287- - AWS CloudWatch integration
288- - EKS cluster metrics
289- - Node and pod resource usage
290-
291- ### ** Access & Management**
292- ``` bash
293- # Get application URL
294- kubectl get svc solar-system-svc
295-
296- # Check ArgoCD dashboard
297- kubectl get svc argocd-server -n argocd
298-
299- # View application logs
300- kubectl logs -l app=solar-system-helm
301-
302- # Scale application
303- kubectl scale deployment solar-system-helm --replicas=3
304- ```
305-
306- ---
307-
308- ## 🗑️ Cleanup
309-
310- To destroy all resources:
311-
312- ``` bash
313- # Via GitHub Actions
314- # Go to Actions → Terraform Destroy Workflow → Run workflow
315-
316- # Or manually
317- cd Terraform
318- terraform destroy -auto-approve
319- ```
320-
321- ---
322-
323- ## 📊 Project Metrics
324-
325- - ** Test Coverage** : 85%+ enforced
326- - ** Build Time** : ~ 5-8 minutes end-to-end
327- - ** Deployment Time** : ~ 10-15 minutes for full infrastructure
328- - ** Container Size** : Optimized with Alpine Linux
329- - ** Uptime** : High availability with auto-scaling
330-
331- ---
332-
333- ## 🤝 Contributing
334-
335- 1 . Fork the repository
336- 2 . Create a feature branch (` git checkout -b feature/amazing-feature ` )
337- 3 . Commit changes (` git commit -m 'Add amazing feature' ` )
338- 4 . Push to branch (` git push origin feature/amazing-feature ` )
339- 5 . Open a Pull Request
340-
341- ---
342-
343- ## 📄 License
344-
345- This project is licensed under the MIT License - see the [ LICENSE] ( LICENSE ) file for details.
346-
347- ---
348-
349- ## 👥 Authors
350-
351- - ** Karim Zakzouk** - * DevOps Implementation* - [ @KarimZakzouk ] ( https://github.com/KarimZakzouk )
352- - ** Siddharth Barahalikar** - * Original Application* - [ LinkedIn] ( https://www.linkedin.com/in/barahalikar-siddharth/ )
353-
354- ---
355-
356- ## 🙏 Acknowledgments
357-
358- - Solar System data and images
359- - Open source DevOps tools community
360- - AWS EKS documentation and best practices
361- - ArgoCD project for GitOps capabilities
362-
363- ---
364-
365- <div align =" center " >
366-
367- ** 🌟 Star this repository if you found it helpful! 🌟**
217+ ## ☸️ Kubernetes Infrastructure
368218
369- [ ![ GitHub stars] ( https://img.shields.io/github/stars/KarimZakzouk/Graduation-Project-Devops?style=social )] ( https://github.com/KarimZakzouk/Graduation-Project-Devops/stargazers )
370- [ ![ GitHub forks] ( https://img.shields.io/github/forks/KarimZakzouk/Graduation-Project-Devops?style=social )] ( https://github.com/KarimZakzouk/Graduation-Project-Devops/network/members )
219+ ### ** AWS EKS Cluster**
220+ - ** Cluster Version** : Kubernetes 1.30
221+ - ** Node Groups** : Auto-scaling worker nodes (t3.medium instances)
222+ - ** Networking** : VPC with public/private subnets across multiple AZs
371223
372- </div >
224+ ### ** Application Deployment**
225+ - ** Helm Charts** : Templated Kubernetes manifests with values override
226+ - ** Secrets** : Environment configuration and sensitive data
227+ - ** Services** : LoadBalancer for external access with health checks
0 commit comments