Simulation on production grade kubernetes deployment on AWS
- Backend application is built on java using spring boot framework
- Created a minimal frontend application with react
- Containerized the applications with docker and stored them in private repository
- Setup the jenkins infrastructure on a custom domain using ansible
- Created webhooks to Jenkins to create,tagged and pushed docker images on each commit
- Created a kubernetes cluster in HA setup and deployed the microservices
- Service discovery for frontend and backend
- Created helm charts to deploy the application
- Created ansible play-book to launch the cluster in Dev and Prod environments
- Playbooks handle the number of nodes and sizes of compute and master nodes depending on the type of environment
- Created kubernetes clustes in HA setup in 3 different availability zones picking the zones automatically in production setup
- Created the clusters with private topology and has a bastion host to maintain the compute and master node
- Used ansible k8s module to deploy the application on the clusters
- The Recipe Management Web application is developed using Express Js framework
- Storing the images of recipes in S3
- The data is cached in Redis for 10 minutes for faster IO
- Containerized the application
- A minimal frontend built on react to view the recipes
- The frontend app uses a public endpoint exposed by backend
- Containerized the application
- Created webhooks on github to trigger a jenkins build on each commit
- Created Jenkins pipeline script to run the unit tests, tag the image with push the image to docker
- Deployed the application in the kubernetes clusters using ansible k8s module
- Created Replica sets from frontend and backend
- Pulled the image from private docker repository using imagePullSecrets
- Backend container has an init-container to waits for the redis service to come up
- Frontend container waits till the backend is up and running
- Passed DB, AWS secret and donfig data to the application with configMap and secrets
- Created a health endpoint for the backend to perform the readiness probe
- Created Liveness probes for both the containers
- Created Loadbalancer services for the frontend and backend
- Created ansible playbooks to create infrastructure
- Hosted jenkins on a custom domain
jenkins.username.com - The ansible playbooks launches the EC2 instances and bootstraps the instance to start a secured jenkins server
- Secured the jenkins server by enabling SSL and periodically updating the let’s encrypt certificates
- Configured a custom custom domain in Route53 and updating the Route53 A record with the launched EC2 instances public dns
- Clone the repo
- dockerhub_credentials(Username and Password)
- github-ssh(SSH)
- kubernetes_credentials(Username and Password) -> Username: admin, Password: (~/.kube/config/users:password | base64 )
- Manage Jenkins -> Configure System -> Cloud -> Kubernetes:
- Kubernetes server certificate key: (~/.kube/config/clusters:certificate-authority-data | base64decode )
- Credentials: kubernetes_credentials
- GitHub Integration
- Kubernetes CLI
- Kubernetes
- SSH Agent
| Team Members | Github Id | NUID |
|---|---|---|
| Suhas Pasricha | suhas1602 | 001434745 |
| Puneet Tanwar | puneetneu | 001409671 |
| Cyril Sebastian | cyrilsebastian1811 | 001448384 |
| Shubham Sharma | shubh1646 | 001447366 |