# route-route/k8s-kind-olly architecture

> Architecture diagram of the GitHub repository route-route/k8s-kind-olly, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/route-route/k8s-kind-olly
- Repository: https://github.com/route-route/k8s-kind-olly

## Overview

This repository provides a reproducible local Kubernetes monitoring stack: users create a kind cluster, install Prometheus, provision dashboards, and inspect metrics in Grafana. The documented data path is cluster exporters → Prometheus → a forwarded host port → Grafana. Setup and verification scripts coordinate that workflow; configuration files define the cluster, monitoring release, and Grafana provisioning. Source excerpts were unavailable, so relationships below follow the README’s explicit descriptions rather than inferred implementation details.

Main entry points: [`helm/values-kube-prometheus-stack.yaml`](https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml) (Prometheus), [`grafana/docker-compose.yml`](https://github.com/route-route/k8s-kind-olly/blob/master/grafana/docker-compose.yml) (Grafana), [`scripts/verify.sh`](https://github.com/route-route/k8s-kind-olly/blob/master/scripts/verify.sh) (Verify stack), [`scripts/create-cluster.sh`](https://github.com/route-route/k8s-kind-olly/blob/master/scripts/create-cluster.sh) (Create cluster)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Setup and verification"]
  node_create["Create cluster<br/>[create-cluster.sh]"]
  node_cluster_config["Cluster config<br/>[cluster.yaml]"]
  node_install["Install monitoring"]
  node_verify["Verify stack<br/>[verify.sh]"]
end

subgraph group_monitoring["Cluster monitoring"]
  node_kind["kind cluster<br/>[cluster.yaml]"]
  node_helm_values["Helm values"]
  node_prometheus["Prometheus"]
  node_exporters["Cluster metrics"]
  node_nodeport["Prometheus NodePort"]
  node_port_mapping["Host port mapping<br/>[cluster.yaml]"]
end

subgraph group_visualization["Grafana visualization"]
  node_fetch["Fetch dashboards"]
  node_dashboard_files["Dashboard files"]
  node_start_grafana["Start Grafana<br/>[start-grafana.sh]"]
  node_compose["Grafana container config<br/>[docker-compose.yml]"]
  node_grafana["Grafana<br/>[docker-compose.yml]"]
  node_datasource["Prometheus datasource<br/>[prometheus.yaml]"]
  node_provider["Dashboard provider<br/>[provider.yaml]"]
end

node_user(("User"))

node_user -->|"starts setup"| node_create
node_create -->|"uses config"| node_cluster_config
node_create -->|"creates cluster"| node_kind
node_user -->|"installs monitoring"| node_install
node_install -->|"uses values"| node_helm_values
node_install -->|"installs stack"| node_prometheus
node_helm_values -->|"configures"| node_prometheus
node_prometheus -->|"scrapes metrics"| node_exporters
node_prometheus -->|"exposes metrics"| node_nodeport
node_nodeport -->|"forwards to host"| node_port_mapping
node_user -->|"fetches dashboards"| node_fetch
node_fetch -->|"writes dashboards"| node_dashboard_files
node_user -->|"starts Grafana"| node_start_grafana
node_start_grafana -->|"uses compose"| node_compose
node_start_grafana -->|"starts container"| node_grafana
node_datasource -->|"provisions datasource"| node_grafana
node_grafana -->|"queries Prometheus"| node_datasource
node_provider -->|"provisions folder"| node_grafana
node_provider -->|"loads dashboards"| node_dashboard_files
node_user -->|"checks stack"| node_verify
node_verify -->|"checks cluster"| node_kind
node_verify -->|"checks service"| node_prometheus
node_verify -->|"checks instance"| node_grafana

click node_create "https://github.com/route-route/k8s-kind-olly/blob/master/scripts/create-cluster.sh"
click node_cluster_config "https://github.com/route-route/k8s-kind-olly/blob/master/kind/cluster.yaml"
click node_install "https://github.com/route-route/k8s-kind-olly/blob/master/scripts/install-monitoring.sh"
click node_verify "https://github.com/route-route/k8s-kind-olly/blob/master/scripts/verify.sh"
click node_kind "https://github.com/route-route/k8s-kind-olly/blob/master/kind/cluster.yaml"
click node_helm_values "https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml"
click node_prometheus "https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml"
click node_exporters "https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml"
click node_nodeport "https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml"
click node_port_mapping "https://github.com/route-route/k8s-kind-olly/blob/master/kind/cluster.yaml"
click node_fetch "https://github.com/route-route/k8s-kind-olly/blob/master/scripts/fetch-dashboards.sh"
click node_dashboard_files "https://github.com/route-route/k8s-kind-olly/tree/master/grafana/dashboards"
click node_start_grafana "https://github.com/route-route/k8s-kind-olly/blob/master/scripts/start-grafana.sh"
click node_compose "https://github.com/route-route/k8s-kind-olly/blob/master/grafana/docker-compose.yml"
click node_grafana "https://github.com/route-route/k8s-kind-olly/blob/master/grafana/docker-compose.yml"
click node_datasource "https://github.com/route-route/k8s-kind-olly/blob/master/grafana/provisioning/datasources/prometheus.yaml"
click node_provider "https://github.com/route-route/k8s-kind-olly/blob/master/grafana/provisioning/dashboards/provider.yaml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_create,node_cluster_config,node_install,node_verify,node_user toneBlue
class node_kind,node_helm_values,node_prometheus,node_exporters,node_nodeport,node_port_mapping toneAmber
class node_fetch,node_dashboard_files,node_start_grafana,node_compose,node_grafana,node_datasource,node_provider toneMint
```

## Components

### Setup and verification

- [Create cluster](https://github.com/route-route/k8s-kind-olly/blob/master/scripts/create-cluster.sh): `scripts/create-cluster.sh`
- [Cluster config](https://github.com/route-route/k8s-kind-olly/blob/master/kind/cluster.yaml): `kind/cluster.yaml`
- [Install monitoring](https://github.com/route-route/k8s-kind-olly/blob/master/scripts/install-monitoring.sh): `scripts/install-monitoring.sh`
- [Verify stack](https://github.com/route-route/k8s-kind-olly/blob/master/scripts/verify.sh): `scripts/verify.sh`

### Cluster monitoring

- [kind cluster](https://github.com/route-route/k8s-kind-olly/blob/master/kind/cluster.yaml): `kind/cluster.yaml`
- [Helm values](https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml): `helm/values-kube-prometheus-stack.yaml`
- [Prometheus](https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml): `helm/values-kube-prometheus-stack.yaml`
- [Cluster metrics](https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml): `helm/values-kube-prometheus-stack.yaml`
- [Prometheus NodePort](https://github.com/route-route/k8s-kind-olly/blob/master/helm/values-kube-prometheus-stack.yaml): `helm/values-kube-prometheus-stack.yaml`
- [Host port mapping](https://github.com/route-route/k8s-kind-olly/blob/master/kind/cluster.yaml): `kind/cluster.yaml`

### Grafana visualization

- [Fetch dashboards](https://github.com/route-route/k8s-kind-olly/blob/master/scripts/fetch-dashboards.sh): `scripts/fetch-dashboards.sh`
- [Dashboard files](https://github.com/route-route/k8s-kind-olly/tree/master/grafana/dashboards): `grafana/dashboards`
- [Start Grafana](https://github.com/route-route/k8s-kind-olly/blob/master/scripts/start-grafana.sh): `scripts/start-grafana.sh`
- [Grafana container config](https://github.com/route-route/k8s-kind-olly/blob/master/grafana/docker-compose.yml): `grafana/docker-compose.yml`
- [Grafana](https://github.com/route-route/k8s-kind-olly/blob/master/grafana/docker-compose.yml): `grafana/docker-compose.yml`
- [Prometheus datasource](https://github.com/route-route/k8s-kind-olly/blob/master/grafana/provisioning/datasources/prometheus.yaml): `grafana/provisioning/datasources/prometheus.yaml`
- [Dashboard provider](https://github.com/route-route/k8s-kind-olly/blob/master/grafana/provisioning/dashboards/provider.yaml): `grafana/provisioning/dashboards/provider.yaml`

### Other components

- **User**

## Connections

- User → Create cluster: starts setup
- Create cluster → Cluster config: uses config
- Create cluster → kind cluster: creates cluster
- User → Install monitoring: installs monitoring
- Install monitoring → Helm values: uses values
- Install monitoring → Prometheus: installs stack
- Helm values → Prometheus: configures
- Prometheus → Cluster metrics: scrapes metrics
- Prometheus → Prometheus NodePort: exposes metrics
- Prometheus NodePort → Host port mapping: forwards to host
- User → Fetch dashboards: fetches dashboards
- Fetch dashboards → Dashboard files: writes dashboards
- User → Start Grafana: starts Grafana
- Start Grafana → Grafana container config: uses compose
- Start Grafana → Grafana: starts container
- Prometheus datasource → Grafana: provisions datasource
- Grafana → Prometheus datasource: queries Prometheus
- Dashboard provider → Grafana: provisions folder
- Dashboard provider → Dashboard files: loads dashboards
- User → Verify stack: checks stack
- Verify stack → kind cluster: checks cluster
- Verify stack → Prometheus: checks service
- Verify stack → Grafana: checks instance
