From 4618559fbd346be2d375d0c3f22357014111138a Mon Sep 17 00:00:00 2001 From: kPsarakis Date: Thu, 21 Apr 2022 18:52:26 +0300 Subject: [PATCH] update README.md with project structure and deployment types --- README.md | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index adf45d5..c6caec0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,51 @@ # Web-scale Data Management Project Template -Please see ```/slides``` for details on what to talk about during the presentation and put all of your artifacts under ```code```. +Basic project structure with Python's Flask and Redis. +**You are free to use any web framework in any language and any database you like for this project.** + +### Project structure + +* `env` + Folder containing the Redis env variables for the docker-compose deployment + +* `helm-config` + Helm chart values for Redis and ingress-nginx + +* `k8s` + Folder containing the kubernetes deployments, apps and services for the ingress, order, payment and stock services. + +* `order` + Folder containing the order application logic and dockerfile. + +* `payment` + Folder containing the payment application logic and dockerfile. + +* `stock` + Folder containing the stock application logic and dockerfile. + +* `test` + Folder containing some basic correctness tests for the entire system. (Feel free to enhance them) + +### Deployment types: + +#### docker-compose (local development) + +After coding the REST endpoint logic run `docker-compose up --build` in the base folder to test if your logic is correct +(you can use the provided tests in the `\test` folder and change them as you wish). + +***Requirements:*** You need to have docker and docker-compose installed on your machine. + +#### minikube (local k8s cluster) + +This setup is for local k8s testing to see if your k8s config works before deploying to the cloud. +First deploy your database using helm by running the `deploy-charts-minicube.sh` file (in this example the DB is Redis +but you can find any database you want in https://artifacthub.io/ and adapt the script). Then adapt the k8s configuration files in the +`\k8s` folder to mach your system and then run `kubectl apply -f .` in the k8s folder. + +***Requirements:*** You need to have minikube (with ingress enabled) and helm installed on your machine. + +#### kubernetes cluster (managed k8s cluster in the cloud) + +Similarly to the `minikube` deployment but run the `deploy-charts-cluster.sh` in the helm step to also install an ingress to the cluster. + +***Requirements:*** You need to have access to kubectl of a k8s cluster.