A comprehensive end-to-end CI/CD infrastructure for containerized applications, featuring AWS infrastructure provisioning, automated configuration management, continuous integration, and GitOps-based deployment to Kubernetes.
This project implements a complete DevOps infrastructure with the following major components:
- EC2 Instance 1 (Master):
- Hosts Jenkins Master that controls the CI pipeline
- Configured with Ansible playbooks
- EC2 Instance 2 (Slave):
- Jenkins Slave node for executing build jobs
- Handles resource-intensive pipeline tasks
- Configured with Ansible playbooks
- Supporting Services:
- S3 Bucket for Terraform state backend
- CloudWatch for monitoring and logging
- kubeadm Cluster:
- kubeadm Kubernetes implementation with master + node1
- Contains dedicated "iVolve" namespace
- Manages Deployments, Services, and Ingress resources
- Core Components:
- Application Controller for state management
- Repository Server for cached repositories
- API Server for RESTful operations
- GitOps Engine for synchronization logic
- Workflow:
- Monitors GitHub repository for manifest changes
- Automatically syncs configurations to Kubernetes
- Maintains desired state defined in Git
- Code is pushed to GitHub repository
- Jenkins Master detects changes and assigns build job to Slave
- Jenkins Slave executes pipeline steps:
- Runs unit tests
- Creates Docker image
- Pushes image to registry
- Updates Kubernetes manifests
- Commits changes back to Git repository
- ArgoCD detects manifest changes in repository
- ArgoCD syncs changes to Minikube cluster
- Application is deployed/updated in the local environment
- AWS account with appropriate permissions
- Docker installed
- Kubernetes cluster (kubeadm master + node1)
- Git installed
- Basic knowledge of Terraform, Ansible, Jenkins, and Kubernetes
Contains Infrastructure as Code (IaC) configurations for AWS resources:
- VPC and subnet configuration
- EC2 instances for Jenkins Master and Slave
- Security groups and networking
- CloudWatch monitoring setup
Go to Terraform documentation →
Contains configuration management scripts to set up:
- Jenkins Master
- Jenkins Slave configuration
- k8s kubemaster and node1
- All necessary dependencies and services
Contains pipeline configurations for CI/CD:
- Jenkinsfile with complete pipeline definition
- Shared libraries for common operations
Contains application Dockerfile and build context:
- Multi-stage build process
- Optimized container configuration
- Spring Boot application containerization
Contains Kubernetes manifests for application deployment:
- Deployment, Service, and Ingress configurations
- Persistent storage setup
- Namespace isolation
Go to Kubernetes documentation →
Contains GitOps configuration for continuous deployment:
- Application definition
- Sync policies
- Repository integration
├── Ansible/ # Ansible playbooks and roles
├── ArgoCD/ # ArgoCD configuration files
├── app/ # Dockerfile and application source
├── Jenkins/ # Jenkinsfile and pipeline configs
├── k8s-manifests/ # Kubernetes manifest files
├── terraform/ # Terraform IaC configurations
└── README.md # This file