Skip to content

Commit a643941

Browse files
committed
Update README to enhance project description and add monitoring details
1 parent ae98ded commit a643941

File tree

1 file changed

+68
-213
lines changed

1 file changed

+68
-213
lines changed

README.md

Lines changed: 68 additions & 213 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
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

Comments
 (0)