- For the full project report, see ./report.pdf.
- A demonstration video is available here.
- Docker
- JDK 8 and Apache Maven
- Node.js [Note: This is only required if starting the development server for the
ui/
module. Not necessary when running the services withdocker-compose
.] - kubectl for Kubernetes deployment
- minikube for Kubernetes deployment
The application can be run with either Docker Compose or Kubernetes (K8s).
- Clean build and start:
time ./clean-start.sh && sleep 25 && open http://localhost:1337
- [Optional] Quicker subsequent build alternative:
docker-compose down && docker-compose up -d && sleep 25 && open http://localhost:1337
-
Compile and run all services in Docker (detached mode) using:
./clean-start.sh
This is equivalent to running:
mvn clean install docker-compose down --remove-orphans docker-compose build --no-cache docker-compose up -d
-
To view the logs for any particular container, use:
docker-compose logs $CONTAINER_NAME
-
[Optional] To run the basic CLI client, use:
mvn exec:java -pl cli-client
-
To view the frontend, navigate to http://localhost:1337.
NGINX Ingress is not included by default so the following command must be run once:
minikube addons enable ingress
-
First make sure
minikube
is running:minikube start
-
Spin up services (takes around 2-5 minutes):
kubectl apply -f k8s
-
For easy monitoring, use the Kubernetes dashboard:
minikube dashboard
-
On another terminal, enable
minikube
tunnelling to make service accessible on localhost:minikube tunnel
Frontend: http://localhost/
Backend: http://localhost/api/graphql/
kubectl delete deployments --all
kubectl delete services --all
kubectl delete pods --all
kubectl delete daemonset --all
kubectl delete pvc -all
kubectl delete pv -all
- Where are the images coming from?
- Images are uploaded to Docker Hub and pulled when the cluster is created.
- After making changes to any module, the
docker.sh
script (found at the root of individual modules) can be executed to build and push the image to Docker Hub. - Docker Buildx is used to create multi-platform images (to support both amd64 and arm64 processors). Setup instructions can be found in the official documentation.
- How should the frontend/broker/individual airline services be scaled?
- In the
k8s/
directory, the appropriate.yaml
file'sreplicas
attribute can be modified.
- In the