A production-inspired DevSecOps project demonstrating how to deploy and manage a full-stack application on Kubernetes using Kustomize and Argo CD.
The focus of this project is on correct structure, clean separation of concerns, and real-world deployment patterns.
- Kubernetes deployments using Kustomize (base + overlays)
- GitOps-style delivery with Argo CD
- Secure TLS using cert-manager
- External database integration via AWS RDS
- Database migrations executed through Kubernetes Jobs
- Clear separation between application code and infrastructure configuration
- Base defines what the system is
- Overlays define how it runs per environment
- Infra defines cluster-level prerequisites required by all environments
This approach keeps deployments predictable, reviewable, and scalable.
- Docker
- kubectl (with Kustomize support)
- A running Kubernetes cluster
- Ingress Controller (Traefik / NGINX)
- cert-manager installed
- A domain name with DNS access (e.g. Cloudflare)
- DNS configured to point the Ingress LoadBalancer to the domain
- Access to an external MySQL database (AWS RDS or equivalent)
Basic Kubernetes knowledge is assumed.
- Secrets (DB credentials, JWT secret) are not committed.
- Environment-specific values are provided via ConfigMaps and Secrets.
- External DB connectivity is handled using an ExternalName Service.
Deployment must follow this order:
1️⃣ Infra layer
kubectl apply -k infra/2️⃣ Application layer
kubectl apply -k kubernetes/overlays/devIngress resources reference a
ClusterIssuer, so the infra layer must exist first.
It is recommended to use separate Argo CD Applications:
-
Infra Application
-
Path:
kubernetes/infra/ -
Namespace:
cert-manager
-
-
Application Deployment
-
Path:
kubernetes/overlays/dev -
Namespace:
dev
-
This keeps cluster-level concerns isolated from application deployments.
This project is actively under development.
- Jenkins CI pipeline with security stages
- Kubernetes deployment using Kustomize
- Argo CD-based GitOps workflow
- TLS with cert-manager
- Database migrations via Kubernetes Job
- Terraform for infrastructure provisioning
- Observability stack (metrics & logging)
- Production environment overlay
- CD pipeline automation (GitOps-driven)
This project is designed to reflect how real DevOps teams structure, deploy, and evolve systems in production.