A proof-of-concept Headlamp plugin that surfaces Kueue batch queueing CRDs in the Headlamp dashboard.
Built as part of my application for the "Add Kueue to Headlamp" LFX Mentorship (upstream issue).
Kueue is a Kubernetes-native job queueing system. It controls when batch jobs (ML training, CI/CD, data processing) are allowed to start based on available cluster resources. It uses three core CRDs:
- ClusterQueue — cluster-wide resource pool defining CPU/memory/GPU quota
- LocalQueue — namespaced entry point for teams, pointing to a ClusterQueue
- Workload — represents a single job waiting for admission
This prototype registers the three Kueue CRDs with Headlamp's plugin API and adds a tabbed dashboard accessible from the sidebar:
Workloads tab:
- Columns: Name, Namespace, Queue (
spec.queueName), Status (parsed fromstatus.conditions), Age
Local Queues tab:
- Columns: Name, Namespace, Cluster Queue (
spec.clusterQueue), Pending Workloads, Age
Cluster Queues tab:
- Columns: Name, Cohort (
spec.cohort), Pending Workloads, Age
- Registers a sidebar entry under Cluster → Kueue
- Registers a route at
/kueue - Uses Headlamp's
ResourceListViewandmakeCustomResourceClassAPIs - CRD API group:
kueue.x-k8s.io/v1beta1
This is a proof-of-concept. The following are planned for the full mentorship project:
- Detail pages with config display, status conditions, and admitted workloads
- Mutating actions (pause/resume workloads)
- Relational navigation (ClusterQueue → LocalQueues → Workloads)
- Map view enhancements
- Tests and Storybook stories
# Clone and install
git clone https://github.com/KumarADITHYA123/Add-Kueue-to-Headlamp-Kubernetes-Batch-Queueing-UI.git
cd Add-Kueue-to-Headlamp-Kubernetes-Batch-Queueing-UI
npm install
# Development mode (auto-reload)
npm run start
# Build for production
npm run build
# Link to Headlamp (Linux/macOS)
mkdir -p ~/.config/Headlamp/plugins
ln -s $(pwd)/dist ~/.config/Headlamp/plugins/kueue-plugin
# Link to Headlamp (Windows)
# Copy the dist/ folder to %APPDATA%\Headlamp\Config\plugins\kueue-pluginsrc/
├── index.tsx # Tabbed dashboard component + route/sidebar registration
└── kueueResources.ts # Kueue CRD class definitions (ClusterQueue, LocalQueue, Workload)