In this project we deploy three microservices
- Payment: that handles billing verification
- Product: that allows clients to browse products
- Admin: that allows admins to manage our app
Architecture:
All microservices are dockerized and a CI pipeline was implemented to automatically publish the images onto Dockerhub
The application is deployed onto Azure Kubernetes service, the manifests that define our Kubernetes ressources are kept in sync with our cluster automatically using the GitOps tool argoCD
#Metrics and Monitoring
- A prometheus service is installed onto our cluster and grafana (which is exposed to the internet through a Loadbalancer) exposes the collected data like shown below
- DataDog collects tracing and telemetry information and they are exposed through the DataDog managed service interface
4 kubernetes microstacks were implemeneted
- 1st stack provisions our terraform backend that remotly hold our tf state and an azure keyvault where we can save secrets shared between stacks
- 2nd stack provisions a postgres database
- 3rd stack provisions our kubernetes cluster and saves it's config in the azure keyvault provisioned in stack 1
- 4th stack installs argoCD on our cluster using helm which will then configure our application and deploy the required K8s ressources