This app was created for bestcloud academy case study.
Some commands below require additional changes to work. The place that is intended for change is indicated as follows <VALUE>. Below is a list of such changes with detailed descriptions.
- <IMAGE NAME>- The name you want to give the image after build.
- <CONTAINER NAME>- The name you want to give to the running container.
- <WEBHOOK URL>- The Webhook you want to use for /alert.
- <DESIRED PORT>- The port you want to use when accessing the API.
- <JSON DATA TO POST>- Information that should be in the POST request. Must be valid JSON.
To build a Docker image.
sudo docker build -t <IMAGE NAME> .If the image was built locally.
sudo docker run --name <CONTAINER NAME> --env WEBHOOK_URL=<WEBHOOK URL> -p <DESIRED PORT>:3000 -d <IMAGE NAME>Or you can run the image from my docker hub. Which was pushed around with Github Action.
sudo docker run --name <CONTAINER NAME> --env WEBHOOK_URL=<WEBHOOK URL> -p <DESIRED PORT>:3000 -d dines97/flask-app:tagnameFor my tests, I used the following command. Attention, when using in other conditions than mine, you may need to change localhost to something else.
curl -X POST --header "Content-Type: application/json" --data '<JSON DATA TO POST>' http://localhost:<DESIRED PORT>/alertFor the fourth task, I chose to use Ingress. As far as I know Ingress uses Nginx for its work. Perhaps this is not the right decision, but that was new to me. So I wanted to put it into practice.
For tests, I am using minikube. The API for Ingress in minikube and APi for Ingress in GKE are slightly different. So I have supplied two .yaml files for two different situations. It is possible that when using my project on a different cloud platform, you will need to change the yaml file again.
Also, the WEBHOOK_URL environment variable is specified in the replication-set.yaml file, which may also need to be changed.
In order to deploy my application to GKE, need to execute the following commands.
kubectl apply -f ./k8s/replication-set.yaml -f ./k8s/load-balancer.yaml -f ./k8s/ingress-gke.yamlIn the case of ingress, the connection is made through port 80
I have deployed the application to GKE. IP address 34.120.21.32. Example usage. http://34.120.21.32/whoami?firstname=Denis&lastname=Kaynar