This repository contains the latest source code of the spring-boot-microservices tutorial
You can watch the tutorial on Youtube here
- Product Service
- Order Service
- Inventory Service
- Notification Service
- API Gateway using Spring Cloud Gateway MVC
- Shop Frontend using Angular 18
The technologies used in this project are:
- Spring Boot
- Angular
- Mongo DB
- MySQL
- Kafka
- Keycloak
- Test Containers with Wiremock
- Grafana Stack (Prometheus, Grafana, Loki and Tempo)
- API Gateway using Spring Cloud Gateway MVC
- Kubernetes
Make sure you have the following installed on your machine:
- Node.js
- NPM
- Angular CLI
Run the following commands to start the frontend application
cd frontend
npm install
npm run start
Run the following command to build and package the backend services into a docker container
mvn spring-boot:build-image -DdockerPassword=<your-docker-account-password>
The above command will build and package the services into a docker container and push it to your docker hub account.
Make sure you have the following installed on your machine:
- Java 21
- Docker
- Kind Cluster - https://kind.sigs.k8s.io/docs/user/quick-start/#installation
Run the k8s/kind/create-kind-cluster.sh script to create the kind Kubernetes cluster
./k8s/kind/create-kind-cluster.sh
This will create a kind cluster and pre-load all the required docker images into the cluster, this will save you time downloading the images when you deploy the application.
Run the k8s/manisfests/infrastructure.yaml file to deploy the infrastructure
kubectl apply -f k8s/manifests/infrastructure.yaml
Run the k8s/manifests/applications.yaml file to deploy the services
kubectl apply -f k8s/manifests/applications.yaml
To access the API Gateway, you need to port-forward the gateway service to your local machine
kubectl port-forward svc/gateway-service 9000:9000
To access the Keycloak admin console, you need to port-forward the keycloak service to your local machine
kubectl port-forward svc/keycloak 8080:8080
To access the Grafana dashboards, you need to port-forward the grafana service to your local machine
kubectl port-forward svc/grafana 3000:3000