Architecture

This describes the runtime view of the setup:

minikube runtime view.dio
Figure 1. minikube runtime view

The setup is as follows:

  • minikube runs a virtual machine.

  • Via a configured ingress, a local browser can access different services running in minikube like Keycloak and Grafana.

  • Keycloak connects to a PostgreSQL database running inside minikube.

  • The PostgreSQL database inside minikube is accessible via a node port from the host.

  • Prometheus collects metrics, and Jaeger collects traces.

  • Promtail collects logs and sends it to Loki which stores them.

  • Gatling can run locally and send Graphite metrics via a node port to a collector inside minikube.

  • Jaeger collects traces from Keycloak running inside minikube, and can also receive traces from a locally running test application.

  • Cryostat can connect to Keycloak instances and create Java Flight Recorder (JFR) recordings.

Logs, traces and metrics are stored within minikube for 7 days = 168 hours. This can be overwritten by adding in an .env file with the setting KB_RETENTION=XXh to change it to a different value. Currently, Jaeger requires this to be set in hours, as it doesn’t understand this to be set in days.