mirror of
https://github.com/Rainyy21/k3s-health-dashboard.git
synced 2026-10-11 00:00:20 -04:00
fix some issuen, added cache and added a test for the config
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# k3s Health Dashboard
|
||||
|
||||
A Streamlit dashboard for monitoring a k3s (or any Kubernetes) cluster — nodes, pods, deployments, and metrics in one place.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
app/
|
||||
main.py FastAPI backend (REST API)
|
||||
cache.py Streamlit cache wrappers (TTL-based)
|
||||
k8s_client.py Kubernetes API client & data helpers
|
||||
config.py Config loaded from environment variables
|
||||
routers/ FastAPI route handlers
|
||||
app.py Streamlit frontend entry point
|
||||
k3s-dashboard.yaml Kubernetes deployment manifest
|
||||
```
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Python 3.10+
|
||||
- A running Kubernetes cluster with a valid kubeconfig at `~/.kube/config`
|
||||
- (Optional) `metrics-server` installed on the cluster for CPU/memory usage
|
||||
|
||||
## Local setup
|
||||
|
||||
```bash
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
Copy the example environment file and edit as needed:
|
||||
|
||||
```bash
|
||||
cp .env .env.local
|
||||
```
|
||||
|
||||
Key environment variables:
|
||||
|
||||
| Variable | Default | Description |
|
||||
|-------------------|-----------------------|--------------------------------------|
|
||||
| `KUBECONFIG` | `~/.kube/config` | Path to kubeconfig |
|
||||
| `IN_CLUSTER` | (unset) | Set to `true` when running as a pod |
|
||||
| `CACHE_TTL` | `15` | Seconds between Kubernetes API calls |
|
||||
| `METRICS_ENABLED` | `true` | Set `false` if metrics-server absent |
|
||||
|
||||
## Running locally
|
||||
|
||||
**Streamlit dashboard:**
|
||||
|
||||
```bash
|
||||
streamlit run app.py
|
||||
```
|
||||
|
||||
Opens at `http://localhost:8501`.
|
||||
|
||||
**FastAPI backend only:**
|
||||
|
||||
```bash
|
||||
uvicorn app.main:app --reload
|
||||
```
|
||||
|
||||
API docs at `http://localhost:8000/docs`.
|
||||
|
||||
## Running tests
|
||||
|
||||
```bash
|
||||
pytest
|
||||
```
|
||||
|
||||
## Deploying to Kubernetes
|
||||
|
||||
1. Build and push the Docker image:
|
||||
|
||||
```bash
|
||||
docker build -t your-registry/k3s-dashboard:latest .
|
||||
docker push your-registry/k3s-dashboard:latest
|
||||
```
|
||||
|
||||
2. Update the image name in `k3s-dashboard.yaml`, then apply:
|
||||
|
||||
```bash
|
||||
kubectl apply -f k3s-dashboard.yaml
|
||||
```
|
||||
|
||||
The manifest creates a `ServiceAccount` with read-only `ClusterRole` access to nodes, pods, namespaces, and metrics.
|
||||
Reference in New Issue
Block a user