This repository contains the Continuous Deployment (CD) and Kubernetes GitOps configuration for the DevOps Capstone Project.
It automates application deployment and monitoring on an AWS EKS cluster using ArgoCD, Helm, Vault, and Prometheus/Grafana, ensuring secure, observable, and scalable delivery.
| Namespace | Purpose |
|---|---|
vault |
HashiCorp Vault for secrets management |
capstoneapp |
Application deployments (frontend + MySQL) |
ingress |
Nginx Ingress Controller |
argocd |
ArgoCD GitOps operator |
monitoring |
Prometheus, Grafana, and AlertManager stack |
- kubectl, Helm
- ArgoCD
- Vault
- Prometheus/Grafana (via kube-prometheus-stack Helm chart)
- Vault deployed in HA mode using Helm.
- Vault Agent Injectors are used to dynamically inject secrets (application credentials and database passwords) into pods.
- Secrets are securely pulled into deployments without hardcoding sensitive data.
- Frontend: Java Spring Boot application (
docker.io/danushvithiyarth/capstoneproject) - Database: MySQL 8 container
- Ingress: Nginx Ingress mapped to domain
https://danushvithiyarth.in
frontendapp.yaml→ App deployment + service + Vault integrationmysql.yaml→ MySQL deployment + Vault integrationingress.yaml→ Nginx Ingress configurationalert-rules.yaml→ Prometheus custom alerts
- ArgoCD deployed in the
argocdnamespace via Helm. - Jenkins (from CI machine) updates this repository with new Docker image tags.
- ArgoCD automatically syncs updated manifests to the EKS cluster, ensuring the application is deployed with the latest changes.
Workflow Summary:
- Jenkins builds a new Docker image.
- Jenkins updates the image tag in Kubernetes manifest (
frontendapp.yaml). - ArgoCD detects the change and deploys the latest version to the cluster.
- Monitoring Stack: Prometheus Operator (kube-prometheus-stack) and Grafana
- Alerts: Configured via Prometheus AlertManager (example: pod not running, deployment unavailable)
- Visualized via Grafana dashboards for node/pod health and resource utilization.
- Alerts tested successfully for both firing and resolved states.
| Component | Tool/Service | Namespace |
|---|---|---|
| Application | Java Spring Boot | capstoneapp |
| Database | MySQL 8 | capstoneapp |
| Ingress Controller | Nginx | ingress |
| Secret Management | Vault (HA Mode) | vault |
| GitOps | ArgoCD | argocd |
| Monitoring | Prometheus, Grafana, AlertManager | monitoring |
| Category | Tools |
|---|---|
| Kubernetes | EKS, Helm |
| GitOps | ArgoCD |
| Secret Management | Vault |
| Monitoring | Prometheus, Grafana, AlertManager |
| Ingress | Nginx |
| Deployment | Helm, kubectl |
| Domain Management | Hostinger, Ingress LoadBalancer |
| CI/CD Integration | Jenkins (from CI repo) |
| Repository | Description |
|---|---|
| DevOps-Capstone-Project_CI | CI pipelines, Jenkins, Terraform |
| DevOps-Capstone-Project_CD | Kubernetes manifests, GitOps setup, Vault, monitoring & alerts |
This repository includes an Activity Log folder with screenshots and evidence of Kubernetes deployments, Vault secret injection, ArgoCD GitOps syncs, and monitoring dashboards:
Activity_Log_CD/– Contains screenshots of application deployment, MySQL setup, ArgoCD sync, Prometheus/Grafana dashboards, and alert notifications.
👤 Danush Vithiyarth
💻 GitHub: @danushvithiyarth
🧠 This setup demonstrates a complete GitOps-based Continuous Deployment workflow — from automated application deployment on EKS to secure secret management with Vault and real-time monitoring via Prometheus and Grafana — representing a production-ready Kubernetes deployment pipeline.