GaeaRuiW/kube-llmops

Go

102

270 commits

updated Jun 12, 2026

See the code

README

English | 中文 | 🌐 Project Site

kube-llmops

GitHub Stars GitHub Forks License Release Kubernetes Go Helm PRs Welcome Discuss

🏆 The most comprehensive Kubernetes-native LLMOps Platform — One command to deploy, manage, monitor, and optimize your entire LLM infrastructure.

[!NOTE] v1.0.0 released -- the v1.0 trio is complete: Operator (LLMPlatform / ModelDeployment / FineTuneRun CRDs) + kubectl-llmops CLI (15+ commands, kubectl llmops <cmd>) + Headlamp Dashboard (Kubernetes UI + kube-llmops-portal plugin). See CHANGELOG for details.

What is kube-llmops?

kube-llmops is an opinionated, batteries-included Helm chart that deploys a complete LLM operations stack on Kubernetes:

  • Model Serving -- vLLM, llama.cpp, or TEI, auto-selected based on model format (engine auto-detection from source name)
  • CLI (kubectl-llmops) -- kubectl plugin with 15+ imperative commands: deploy, list, status, scale, canary, logs, test, port-forward, finetune, rag, platform, migrate, ...
  • AI Gateway -- LiteLLM for unified OpenAI-compatible API, key management, rate limiting, budget control
  • Observability -- Prometheus + Grafana (11 dashboards + 8 alert rules) + Langfuse v3 LLM tracing + node-exporter + kube-state-metrics
  • Logging -- Fluent Bit + Loki, queryable in Grafana Explore
  • Autoscaling -- KEDA scales vLLM pods based on queue depth, TTFT P95, and TPOT P95; supports scale-to-zero with fallback
  • Security -- Keycloak SSO for Grafana/Langfuse, LLM-Guard prompt injection defense, NetworkPolicy isolation
  • RAG Infrastructure -- Dify platform + pgvector + TEI embedding/reranking + Ragas evaluation + quality gate
  • Fine-tuning -- LLaMA-Factory LoRA/QLoRA/Full fine-tuning with Argo Workflows pipeline + MLflow tracking
  • Model Distribution -- MinIO model cache + HuggingFace fallback + hf-transfer multi-threaded downloads
  • Storage -- MinIO S3-compatible model storage, PVC model cache
# Install from local source (recommended)
helm install kube-llmops charts/kube-llmops-stack -f values-minimal.yaml

Use Cases

  • "I want to deploy DeepSeek-R1-0528 and let 5 teams share it with token budget limits"
  • "I want to see which team burned the most GPU hours this month"
  • "I want a GGUF model on llama.cpp and a full-precision model on vLLM behind the same API"
  • "I want every LLM request traced with full prompt, tokens, cost, and latency"

Architecture

kube-llmops Architecture

See ARCHITECTURE.md for the full technical design.

Screenshots

API Demo
Grafana Dashboards
GPU Monitoring (DCGM)
vLLM Model Serving
Langfuse LLM Tracing
MinIO Model Storage
Keycloak SSO
LiteLLM Gateway

Quick Start

Prerequisites

  • Kubernetes cluster (1.28+) with GPU node, or kind for CPU-only demo
  • Helm 3.x
  • kubectl

Install

# Install from local source
helm install kube-llmops charts/kube-llmops-stack \
  -f charts/kube-llmops-stack/values-single-node.yaml \
  --set global.nodePort.enabled=true \
  --set global.nodePort.host=$NODE_IP

# Or install with ingress
helm install kube-llmops charts/kube-llmops-stack \
  -f values-minimal.yaml \
  --set ingress.enabled=true \
  --set ingress.host=llmops.local

# Or: CPU-only demo (no GPU required)
helm install kube-llmops charts/kube-llmops-stack -f values-ci.yaml

Chat with your model

curl http://litellm.llmops.local/v1/chat/completions \
  -H "Authorization: Bearer sk-kube-llmops-dev" \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen2-5-0-5b","messages":[{"role":"user","content":"Hello!"}]}'

Access the UIs

Option A: Ingress (recommended — no port-forward needed)

# Enable ingress during install
helm install kube-llmops charts/kube-llmops-stack \
  -f values-minimal.yaml \
  --set ingress.enabled=true \
  --set ingress.host=llmops.local    # or your real domain

# If no real domain, add to /etc/hosts:
NODE_IP=$(kubectl get node -o jsonpath='{.items[0].status.addresses[0].address}')
echo "$NODE_IP litellm.llmops.local grafana.llmops.local langfuse.llmops.local keycloak.llmops.local minio.llmops.local prometheus.llmops.local" | sudo tee -a /etc/hosts
ServiceIngress URLDefault Credentials
LiteLLM (AI Gateway)http://litellm.llmops.localany username / sk-kube-llmops-dev
Grafana (Dashboards)http://grafana.llmops.localadmin / admin123!
Langfuse (LLM Tracing)http://langfuse.llmops.localadmin@kube-llmops.local / admin123!
Keycloak (SSO)http://keycloak.llmops.localadmin / admin123!
MinIO (Object Storage)http://minio.llmops.localminioadmin / minioadmin
Prometheus (Metrics)http://prometheus.llmops.localNo auth

Option B: Port-forward (fallback)

kubectl port-forward svc/kube-llmops-litellm 4000:4000 &
kubectl port-forward svc/kube-llmops-grafana 3000:3000 &
kubectl port-forward svc/kube-llmops-langfuse 3001:3000 &

[!TIP] When SSO is enabled, use Keycloak credentials (admin / admin123!) to log in to Grafana, Langfuse, and MinIO. The Keycloak user email (admin@kube-llmops.local) matches the Langfuse init user, so SSO login automatically sees existing projects and traces.

[!WARNING] These are development defaults. For production, override via --set:

helm install kube-llmops charts/kube-llmops-stack \
  --set litellm.masterKey=sk-your-secret-key \
  --set observability.grafana.adminPassword=your-grafana-pw \
  --set langfuse.init.userPassword=your-langfuse-pw \
  --set langfuse.externalUrl=https://langfuse.your-domain.com

Features

Featurekube-llmopsRaw vLLMKAITOKServe
Engine auto-selection (GPTQ->vLLM, GGUF->llama.cpp)YesN/ANoNo
AI Gateway (key mgmt, cost tracking, rate limit)YesNoNoNo
LLM tracing (prompt, tokens, cost per request)YesNoNoNo
Pre-built Grafana dashboards (11) + alert rules (8)YesNoNoNo
GPU monitoring (DCGM)YesDIYNoNo
KEDA autoscaling (queue + TTFT + TPOT, scale-to-zero)YesNoNoPartial
SSO integration (Keycloak OIDC)YesNoNoNo
S3 model storage (MinIO)YesNoNoNo
Container log aggregation (Fluent Bit + Loki)YesNoNoNo
RAG infrastructure (Dify + eval + guardrails)YesNoNoNo
One-click full stackYesN/ANoNo
Cloud-agnosticYesYesAzure onlyYes

Deployment Profiles

ProfileGPUModelsMonitoringTracingLoggingUse Case
values-ci.yamlNoneNone (CPU)BasicOffOffCI / Demo
values-minimal.yaml1x1 smallPrometheus + GrafanaLangfuseFluent Bit + LokiDevelopment
values-standard.yaml4-8x2-3Full OTel stackLangfuseFluent Bit + LokiTeam
values-production.yaml16+xNFull + HAFullFullEnterprise

Documentation

Roadmap

  • v0.1.0 (MVP) -- Model serving + Gateway + Metrics + Tracing
  • v0.2.0 -- Langfuse v3 + Keycloak SSO + Infra automation + NodePort
  • v0.3.0 -- RAG infra (Dify + pgvector + TEI embedding/reranking + Ragas eval + LLM-Guard + Quality Gate)
  • v0.4.0 -- Fine-tuning pipeline (LLaMA-Factory + Argo Workflows + MLflow) + JupyterHub + Terraform
  • v0.5.0 -- Advanced Inference (latency routing, prefix caching, multi-trigger KEDA, scale-to-zero, canary, llm-d, multi-accelerator)
  • v1.0.0 (current) -- Operator + kubectl-llmops CLI (15+ commands) + Headlamp Dashboard

License

Apache License 2.0

License Notice

This project is Apache 2.0 licensed. However, some optional dependencies have different licenses:

ComponentLicenseRequired?
GrafanaAGPL-3.0Optional (can bring your own)
LokiAGPL-3.0Optional (can use OpenSearch)
All other componentsApache 2.0 / MIT / BSDYes

If AGPL is a concern for your organization, Grafana and Loki can be disabled and replaced with your own visualization and log storage solutions.

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

Star History

If you find this project useful, please give it a star! ⭐

🤝 Community

We need your help to reach 1,000 stars! Every star, issue, PR, and discussion helps the project grow. Share kube-llmops with your team, write a blog post, or contribute a feature — all contributions are welcome ❤️

ai
deep-learning
fine-tuning
grafana
helm
k8s
keycloak
kubernetes
litellm
llama-cpp
llmops
mlops
prometheus
rag
vllm

Contributors

GaeaRuiW

269 commits

stark256-spec

1 commits

GaeaRuiW/kube-llmops

Go

102

270 commits

updated Jun 12, 2026

See the code

README

English | 中文 | 🌐 Project Site

kube-llmops

GitHub Stars GitHub Forks License Release Kubernetes Go Helm PRs Welcome Discuss

🏆 The most comprehensive Kubernetes-native LLMOps Platform — One command to deploy, manage, monitor, and optimize your entire LLM infrastructure.

[!NOTE] v1.0.0 released -- the v1.0 trio is complete: Operator (LLMPlatform / ModelDeployment / FineTuneRun CRDs) + kubectl-llmops CLI (15+ commands, kubectl llmops <cmd>) + Headlamp Dashboard (Kubernetes UI + kube-llmops-portal plugin). See CHANGELOG for details.

What is kube-llmops?

kube-llmops is an opinionated, batteries-included Helm chart that deploys a complete LLM operations stack on Kubernetes:

  • Model Serving -- vLLM, llama.cpp, or TEI, auto-selected based on model format (engine auto-detection from source name)
  • CLI (kubectl-llmops) -- kubectl plugin with 15+ imperative commands: deploy, list, status, scale, canary, logs, test, port-forward, finetune, rag, platform, migrate, ...
  • AI Gateway -- LiteLLM for unified OpenAI-compatible API, key management, rate limiting, budget control
  • Observability -- Prometheus + Grafana (11 dashboards + 8 alert rules) + Langfuse v3 LLM tracing + node-exporter + kube-state-metrics
  • Logging -- Fluent Bit + Loki, queryable in Grafana Explore
  • Autoscaling -- KEDA scales vLLM pods based on queue depth, TTFT P95, and TPOT P95; supports scale-to-zero with fallback
  • Security -- Keycloak SSO for Grafana/Langfuse, LLM-Guard prompt injection defense, NetworkPolicy isolation
  • RAG Infrastructure -- Dify platform + pgvector + TEI embedding/reranking + Ragas evaluation + quality gate
  • Fine-tuning -- LLaMA-Factory LoRA/QLoRA/Full fine-tuning with Argo Workflows pipeline + MLflow tracking
  • Model Distribution -- MinIO model cache + HuggingFace fallback + hf-transfer multi-threaded downloads
  • Storage -- MinIO S3-compatible model storage, PVC model cache
# Install from local source (recommended)
helm install kube-llmops charts/kube-llmops-stack -f values-minimal.yaml

Use Cases

  • "I want to deploy DeepSeek-R1-0528 and let 5 teams share it with token budget limits"
  • "I want to see which team burned the most GPU hours this month"
  • "I want a GGUF model on llama.cpp and a full-precision model on vLLM behind the same API"
  • "I want every LLM request traced with full prompt, tokens, cost, and latency"

Architecture

kube-llmops Architecture

See ARCHITECTURE.md for the full technical design.

Screenshots

API Demo
Grafana Dashboards
GPU Monitoring (DCGM)
vLLM Model Serving
Langfuse LLM Tracing
MinIO Model Storage
Keycloak SSO
LiteLLM Gateway

Quick Start

Prerequisites

  • Kubernetes cluster (1.28+) with GPU node, or kind for CPU-only demo
  • Helm 3.x
  • kubectl

Install

# Install from local source
helm install kube-llmops charts/kube-llmops-stack \
  -f charts/kube-llmops-stack/values-single-node.yaml \
  --set global.nodePort.enabled=true \
  --set global.nodePort.host=$NODE_IP

# Or install with ingress
helm install kube-llmops charts/kube-llmops-stack \
  -f values-minimal.yaml \
  --set ingress.enabled=true \
  --set ingress.host=llmops.local

# Or: CPU-only demo (no GPU required)
helm install kube-llmops charts/kube-llmops-stack -f values-ci.yaml

Chat with your model

curl http://litellm.llmops.local/v1/chat/completions \
  -H "Authorization: Bearer sk-kube-llmops-dev" \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen2-5-0-5b","messages":[{"role":"user","content":"Hello!"}]}'

Access the UIs

Option A: Ingress (recommended — no port-forward needed)

# Enable ingress during install
helm install kube-llmops charts/kube-llmops-stack \
  -f values-minimal.yaml \
  --set ingress.enabled=true \
  --set ingress.host=llmops.local    # or your real domain

# If no real domain, add to /etc/hosts:
NODE_IP=$(kubectl get node -o jsonpath='{.items[0].status.addresses[0].address}')
echo "$NODE_IP litellm.llmops.local grafana.llmops.local langfuse.llmops.local keycloak.llmops.local minio.llmops.local prometheus.llmops.local" | sudo tee -a /etc/hosts
ServiceIngress URLDefault Credentials
LiteLLM (AI Gateway)http://litellm.llmops.localany username / sk-kube-llmops-dev
Grafana (Dashboards)http://grafana.llmops.localadmin / admin123!
Langfuse (LLM Tracing)http://langfuse.llmops.localadmin@kube-llmops.local / admin123!
Keycloak (SSO)http://keycloak.llmops.localadmin / admin123!
MinIO (Object Storage)http://minio.llmops.localminioadmin / minioadmin
Prometheus (Metrics)http://prometheus.llmops.localNo auth

Option B: Port-forward (fallback)

kubectl port-forward svc/kube-llmops-litellm 4000:4000 &
kubectl port-forward svc/kube-llmops-grafana 3000:3000 &
kubectl port-forward svc/kube-llmops-langfuse 3001:3000 &

[!TIP] When SSO is enabled, use Keycloak credentials (admin / admin123!) to log in to Grafana, Langfuse, and MinIO. The Keycloak user email (admin@kube-llmops.local) matches the Langfuse init user, so SSO login automatically sees existing projects and traces.

[!WARNING] These are development defaults. For production, override via --set:

helm install kube-llmops charts/kube-llmops-stack \
  --set litellm.masterKey=sk-your-secret-key \
  --set observability.grafana.adminPassword=your-grafana-pw \
  --set langfuse.init.userPassword=your-langfuse-pw \
  --set langfuse.externalUrl=https://langfuse.your-domain.com

Features

Featurekube-llmopsRaw vLLMKAITOKServe
Engine auto-selection (GPTQ->vLLM, GGUF->llama.cpp)YesN/ANoNo
AI Gateway (key mgmt, cost tracking, rate limit)YesNoNoNo
LLM tracing (prompt, tokens, cost per request)YesNoNoNo
Pre-built Grafana dashboards (11) + alert rules (8)YesNoNoNo
GPU monitoring (DCGM)YesDIYNoNo
KEDA autoscaling (queue + TTFT + TPOT, scale-to-zero)YesNoNoPartial
SSO integration (Keycloak OIDC)YesNoNoNo
S3 model storage (MinIO)YesNoNoNo
Container log aggregation (Fluent Bit + Loki)YesNoNoNo
RAG infrastructure (Dify + eval + guardrails)YesNoNoNo
One-click full stackYesN/ANoNo
Cloud-agnosticYesYesAzure onlyYes

Deployment Profiles

ProfileGPUModelsMonitoringTracingLoggingUse Case
values-ci.yamlNoneNone (CPU)BasicOffOffCI / Demo
values-minimal.yaml1x1 smallPrometheus + GrafanaLangfuseFluent Bit + LokiDevelopment
values-standard.yaml4-8x2-3Full OTel stackLangfuseFluent Bit + LokiTeam
values-production.yaml16+xNFull + HAFullFullEnterprise

Documentation

Roadmap

  • v0.1.0 (MVP) -- Model serving + Gateway + Metrics + Tracing
  • v0.2.0 -- Langfuse v3 + Keycloak SSO + Infra automation + NodePort
  • v0.3.0 -- RAG infra (Dify + pgvector + TEI embedding/reranking + Ragas eval + LLM-Guard + Quality Gate)
  • v0.4.0 -- Fine-tuning pipeline (LLaMA-Factory + Argo Workflows + MLflow) + JupyterHub + Terraform
  • v0.5.0 -- Advanced Inference (latency routing, prefix caching, multi-trigger KEDA, scale-to-zero, canary, llm-d, multi-accelerator)
  • v1.0.0 (current) -- Operator + kubectl-llmops CLI (15+ commands) + Headlamp Dashboard

License

Apache License 2.0

License Notice

This project is Apache 2.0 licensed. However, some optional dependencies have different licenses:

ComponentLicenseRequired?
GrafanaAGPL-3.0Optional (can bring your own)
LokiAGPL-3.0Optional (can use OpenSearch)
All other componentsApache 2.0 / MIT / BSDYes

If AGPL is a concern for your organization, Grafana and Loki can be disabled and replaced with your own visualization and log storage solutions.

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

Star History

If you find this project useful, please give it a star! ⭐

🤝 Community

We need your help to reach 1,000 stars! Every star, issue, PR, and discussion helps the project grow. Share kube-llmops with your team, write a blog post, or contribute a feature — all contributions are welcome ❤️

ai
deep-learning
fine-tuning
grafana
helm
k8s
keycloak
kubernetes
litellm
llama-cpp
llmops
mlops
prometheus
rag
vllm

Contributors

GaeaRuiW

269 commits

stark256-spec

1 commits

Languages

Go

46.8%

Python

35.0%

HCL

6.5%

Go Template

4.0%

Shell

4.0%

Makefile

2.1%

TypeScript

1.1%