Sign inSign up

greenkube/greenkube

By greenkube

•Updated 1 day ago

GreenKube is a FinGreenOps tool which goal is to estimate and reduce CO2 emissions of K8s clusters

Image
1

10K+

greenkube/greenkube repository overview

⁠GreenKube — FinGreenOps Platform for Kubernetes

Measure, understand, and reduce the carbon footprint of your Kubernetes infrastructure.

GreenKube gives DevOps, SRE, and FinOps teams real-time carbon visibility and cost control over their Kubernetes workloads — in a single helm install.

GitHub Stars License: Apache 2.0


⁠🚀 Try it in 30 seconds (no Kubernetes required)

docker run --rm -p 9000:9000 greenkube/greenkube:latest demo --no-browser --port 9000
# → Open http://localhost:9000

Loads 7 days of realistic data: 22 pods, 5 namespaces, carbon emissions, costs, and 40+ optimization recommendations.

Live demo: demo.greenkube.cloud⁠


⁠✨ What GreenKube gives you

  • Per-pod CO₂e emissions — energy estimation based on SPECpower benchmarks and real-time grid intensity (Electricity Maps API)
  • Cost tracking — via OpenCost integration (AWS, GCP, Azure, OVH, Scaleway, on-prem)
  • Built-in web dashboard — SvelteKit SPA with ECharts, real-time charts, pod table, node inventory
  • 9 types of recommendations — zombie pods, CPU/memory rightsizing, autoscaling, off-peak scheduling, carbon-aware scheduling, and more
  • Grafana integration — pre-built dashboard + Prometheus metrics at /prometheus/metrics
  • REST API — full FastAPI backend with OpenAPI docs at /api/v1/docs
  • Flexible storage — PostgreSQL (default), SQLite (dev/demo), Elasticsearch (scale)

⁠📦 Production Deployment (Helm)

helm repo add greenkube https://GreenKubeCloud.github.io/GreenKube
helm repo update
helm install greenkube greenkube/greenkube \
  -n greenkube \
  --create-namespace

Access the dashboard:

kubectl port-forward svc/greenkube-api 8000:8000 -n greenkube
# → Open http://localhost:8000

⁠🎮 Demo mode (with kubectl)

kubectl run greenkube-demo \
  --image=greenkube/greenkube:latest \
  --restart=Never \
  --command -- greenkube demo --no-browser --port 9000

kubectl wait --for=condition=Ready pod/greenkube-demo --timeout=60s
kubectl port-forward pod/greenkube-demo 9000:9000
# → Open http://localhost:9000

kubectl delete pod greenkube-demo  # clean up when done

⁠🏗️ Architecture

GreenKube follows a clean hexagonal architecture:

  • Collectors — Prometheus, Kubernetes API, OpenCost, Electricity Maps, Boavizta
  • Core — energy estimation, CO₂e calculation, recommendation engine
  • Storage — PostgreSQL / SQLite / Elasticsearch (Repository pattern)
  • API — FastAPI + SvelteKit dashboard
  • CLI — Typer-based, supports start, report, recommend, demo

⁠⚙️ Environment Variables

VariableDefaultDescription
DB_TYPEpostgresDatabase backend: postgres, sqlite, elasticsearch
DB_HOSTlocalhostPostgreSQL host
DB_PORT5432PostgreSQL port
DB_NAMEgreenkubeDatabase name
DB_USERgreenkubeDatabase user
DB_PASSWORD—Database password (use a secret)
PROMETHEUS_URLauto-discoverPrometheus endpoint
OPENCOST_URLauto-discoverOpenCost endpoint
ELECTRICITY_MAPS_TOKEN—Electricity Maps API token (optional)
CLOUD_PROVIDERauto-detectaws, gcp, azure, ovh, scaleway, on-prem
DEFAULT_ZONEFRDefault carbon intensity zone (ISO 3166)
API_PORT8000API server port
LOG_LEVELINFOLogging level


⁠📄 License

Apache 2.0 — free for personal and commercial use.

Tag summary

Content type

Image

Digest

sha256:0c0193228…

Size

90.6 MB

Last updated

about 1 month ago

docker pull greenkube/greenkube