This project deals with operationalising a micro-service application. The first part of the project, particularly the script run_docker.sh deals with deploying and running the application in Docker running on a host OS such as developer’s Mac machine. Running an application in Docker involves writing a Docker image (Dockerfile) that deals with installing dependencies, copying over the project files in this case app.py and runtime instructions such as starting the application by executing the command “python app.py” at entry point once the container is instantiated from the Docker image. The project also deals with uploading this docker image to the default Docker hub repository so that it can be pulled and re-used on other host machines. This is demonstrated in the script upload_docker.sh
The second part of the project deals with running an app in Docker container but this time not on the developer’s host OS but in a Kubernetes cluster running on the host OS. This is demonstrated in the script run_kubernetes.sh.
As a continuation, in the capstone project, I have tried to deploy the same application but this time on a scaled environment like AWS EKS. I have followed the rolling deployment strategy where any subsequent change gets deployed and overwrites the previous change. I created the EKS cluster and worker nodes in AWS and referenced these in my Jenkins pipeline. The pipeline basically builds the Docker image and uploads it to the docker registry. This image then gets pulled and gets deployed to EKS in the last stage of the pipeline.