This project is a full-scale DevOps pipeline built as a final project for a university DevOps course. It automates the CI/CD process for multiple microservices across development, QA, UAT, and production environments using modern cloud-native tools.
The pipeline manages three FastAPI-based microservices using separate repositories for application code and infrastructure as code.
- Multi-Environment Promotion Pipeline: Supports Dev → QA → UAT → Prod deployment flow.
- Nightly Builds with Semantic Versioning: Services are rebuilt and pushed to AWS ECR only if changes are detected.
- Infrastructure as Code:
- Terraform provisions resources for QA (EC2, S3).
- Kubernetes (EKS) manages UAT and Prod environments.
- Blue/Green Deployments: Implemented in production using ArgoCD and Argo Rollouts for zero-downtime releases.
- GitOps Workflow: All environment states managed through GitHub repos, automated pipelines and shell scripts.
- Backend Services: FastAPI (Python)
- Infrastructure:
- AWS (ECR, EC2, S3, Route 53, SSM, Secrets Manager)
- Kubernetes (EKS)
- Terraform
- Helm + ArgoCD
- cert-manager + Let’s Encrypt
- CI/CD:
- GitHub Actions
- Shell Scripting
- Security:
- SSL/TLS with cert-manager
- DNS automation via Route 53
- Terraform spins up an ephemeral EC2 instance for QA.
- EC2 pulls test scripts from S3 and runs smoke tests on the latest Docker images.
- If tests pass, images are tagged and promoted to UAT.
- UAT and Prod are both deployed to EKS.
- Blue/Green deployment strategy is enabled via Argo Rollouts for Prod.
- cert-manager automatically issues and renews HTTPS certificates using Let’s Encrypt, with DNS validation handled by Route 53.
- Detect changes in service code nightly.
- Build Docker images and tag with semantic version.
- Push to ECR.
- Run Terraform plan/apply to spin up QA environment.
- Pull images and set up smoke tests via scripts stored in S3.
- Execute smoke tests via EC2 instance.
- On success, promote to UAT.
- Spin up UAT via scripts to perform tests.
- On success promote and deploy to Prod via scripts and use Argo Rollouts for blue/green.