dogbern / cloud-native-demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cloud-native-demo

This demo sets up a Kubernetes cluster using AWS Elastic Kubernetes Service and deploys a dockerize web app using Jenkins CI/CD pipeline.


Design

The design folder currently shows the initial whiteboard design and the tech stacks that will be used for the demo.

Project Info

  • Docker image of the app pushed to dockerhub. Repo => dogbern/demoapp:1.0
  • Postman screenshots in artifacts folder to test the app works

Use the below command to run the container

docker container run --name web -p 5000:5000 dogbern/demoapp:latest

Set up AWS EKS Cluster and Deploy app from local

1. Clone repo and execute apply_infra.sh script in the terraform-infra folder. This creates the AWS EKS Cluster environment
2. Execute deploy.sh script

For CICD Pipeline and monitoring with kubernetes dashboard, use the following steps

1. Fork this repo and set up Jenkins and execute apply_jenkins.sh script in terraform-jenkins folder. Use the public dns on port 8080 to configure Jenkins.
2. Using blue ocean plugin, create a webhook to the github repo to set up a pipeline. This then deploys the app to your cluster
3. Deploy Prometheus, Prometheus Alert, Grafana and Kubernetes Dashboard by running apply_monitoring.sh script in terraform-monitoring-dashboard folder

Clean-up - execute the following scripts

1. terraform-monitoring-dashboard/destroy_monitoring.sh
2. terraform-infra/destroy_infra.sh
3. terraform-jenkins/destroy_jenkins.sh

Tools to install

Helm3
Terraform
kubectl
aws cli

About


Languages

Language:HCL 79.3%Language:Shell 12.0%Language:Dockerfile 4.6%Language:Python 4.1%