In this mini project, we are going to learn the following:
- Deploy a simple Python based web application on a Kubernetes cluster.
- We will use Helm to deploy this app.
- This web app uses FastAPI and exposes some metrics using the Prometheus Python client.
- To store and visualize these metrics we will deploy Prometheus and Grafana in the K8s cluster.
- We will also deploy and use an ingress controller for exposing the web app, Prometheus, and Grafana to external users.
- For logging we will deploy and use Grafana Loki stack.
Full project in my GitHub
High-level steps to complete this project
Step1: Write the Python app.
Step2: Create the Dockerfile for the app.
Step3: Create the container image.
Step4: Push the container image to an image registry like Docker Hub.
Step5: Get access to a K8s cluster.
Step6: Deploy an ingress controller.
Step7: Create the Helm chart for your app and deploy it to the K8s cluster.
Step8: Deploy Prometheus stack on the K8s cluster using Helm.
Step9: Create a servicemonitor resource which defines the target to be monitored by Prometheus.
Step10: Verify targets and service discovery in Prometheus.
Step11: Configure Grafana dashboard and verify.
Step12. Deploy Grafana Loki stack using Helm.
Hope it was useful. Cheers!