The project involves building a complete automated deployment
- Build a complete automated deployment for a web app residing in a GitHub repository into a Kubernetes Cluster hosted on a cloud platform. The web app should have a url so that public users can access it.
- Add autoscaling to handle unexpected load whereby the cluster determines the load and scales up web apps horizontally.
- Deploy a single monitoring tool to monitor and visualize the cluster.
- Using a remote Jenkins Automation Server running on my local machine. The Jenkins Server is configured with docker and kubectl.
- Install Docker Pipeline and Google Kubernetes Engine plugins.
- Create a kubernetes cluster with Google Kubernetes Engine on the Google Cloud Platform
- Configure credentials on the Jenkins Server that allows it to authenticate into GKE using Service Account, configure credentials for GitHub Repo and Docker Hub
- Keep Dockerfile, Jenkinsfile, deployment.yaml and application files on the GitHub repository.
- Dockerfile contains the instructions on how to containerize the application
- deployment.yaml contains the kubernetes manifest files that define how to deploy the application from docker hub unto the kubernetes cluster.
- Jenkinsfile contains the following 5 stages; Checkout, Build, Test, Push Image, Deploy to GKE
- Configure build triggers for the GitHub Repository to automatically build and deploy to the kubernetes test cluster and then wait for approval for the deployment unto the production cluster
- Implement Autoscaling using HorizontalPodAutoscaler(k8s) for pods and Cluster Autoscaler(cloud platform)
- Using Helm install/deploy Prometheus and Grafana to kubernetes cluster, configure them to monitor the cluster