UNPKG

@kinvolk/headlamp-plugin

Version:

The needed infrastructure for building Headlamp plugins.

158 lines (110 loc) 4.54 kB
# Volcano Headlamp Plugin This [Headlamp](https://headlamp.dev/) plugin adds Volcano resources to the Headlamp UI so Kubernetes operators can inspect batch scheduling state with list and detail pages. Upstream issue: [kubernetes-sigs/headlamp#4359](https://github.com/kubernetes-sigs/headlamp/issues/4359) ## Features ### Current Features - **Volcano Jobs** (`batch.volcano.sh/v1alpha1`) - List view with status, queue, scheduling counters, retries, replicas, tasks, and age - Detail view with summary info, Pod status, tasks, policies, plugins, conditions, and events - Logs viewer with pod/container selection and standard log controls - Pod Issues section for actionable runtime blockers - Queue and related PodGroup navigation links - Suspend and resume actions when supported by the current Job state - **Volcano Queues** (`scheduling.volcano.sh/v1beta1`) - List view with state, weight, parent queue, and workload counters - Detail view with queue status, resources, guarantees, reservations, child queues, and events - Queue lifecycle actions for opening, closing, and updating weight - Parent and child queue navigation links - **Volcano PodGroups** (`scheduling.volcano.sh/v1beta1`) - List view with phase, min member, running count, queue, and age - Detail view with progress, conditions, min task member, min resources, and events - Queue navigation links - Fallback message when conditions are not reported - **Plugin Navigation and UX** - Dedicated `Volcano` sidebar section in Headlamp - Consistent status color rendering across Jobs, Queues, and PodGroups ### Planned Features - Advanced gang-scheduling visualization - Metrics-focused views and additional operational dashboards ## Volcano CRDs Supported | CRD | API Group | | -------- | ------------------------------- | | Job | `batch.volcano.sh/v1alpha1` | | Queue | `scheduling.volcano.sh/v1beta1` | | PodGroup | `scheduling.volcano.sh/v1beta1` | ## Demo https://github.com/user-attachments/assets/fbdef40e-2130-4e4e-bb18-a93dd129c834 # Testing the plugin ## Prerequisites - Node.js and npm - A Kubernetes cluster with [Volcano installed](https://volcano.sh/en/docs/installation/) - [Headlamp](https://headlamp.dev/) (desktop app or in-cluster deployment) ## Steps to Test 1. Clone this repository: ```bash git clone https://github.com/headlamp-k8s/plugins.git ``` 2. Navigate to the plugin directory: ```bash cd volcano ``` 3. Install dependencies: ```bash npm install ``` 4. Start plugin development mode: ```bash npm run start ``` 5. Launch Headlamp. You should now see `Volcano` in the sidebar. ## Generate Volcano Resources for Testing Apply the included test manifests: ```bash kubectl apply -f test-files/deploy/namespace.yaml kubectl apply -f test-files/deploy/queue.yaml kubectl apply -f test-files/deploy/job-running.yaml kubectl apply -f test-files/deploy/job-completed.yaml kubectl apply -f test-files/deploy/job-unschedulable.yaml kubectl apply -f test-files/deploy/job-failed.yaml ``` These manifests create scenarios for: - normal/running job - completed job - unschedulable job (resource pressure) - failed job ### Verify from CLI ```bash kubectl get vcjob -n volcano-lab kubectl get queue volcano-lab-queue kubectl get podgroups.scheduling.volcano.sh -n volcano-lab ``` ### Verify in Headlamp - Open `Volcano > Jobs`, `Volcano > Queues`, and `Volcano > PodGroups`. - Confirm list pages render expected status/columns. - Open detail pages and verify section content and events rendering. - Verify cross-links: - Job -> Queue - Job -> PodGroup (when available) - PodGroup -> Queue ## Clean Up Test Resources ```bash kubectl delete -f test-files/deploy/job-failed.yaml kubectl delete -f test-files/deploy/job-unschedulable.yaml kubectl delete -f test-files/deploy/job-completed.yaml kubectl delete -f test-files/deploy/job-running.yaml kubectl delete -f test-files/deploy/queue.yaml kubectl delete -f test-files/deploy/namespace.yaml ``` ## Development Commands ```bash npm run start npm run tsc npm run lint npm run build ``` ## Feedback and Questions - Please open an issue in this repository for bugs, feature requests, or feedback. - For Headlamp-wide plugin discussions, you can also use the `#headlamp` channel in Kubernetes Slack. ## References - [Headlamp plugin development docs](https://headlamp.dev/docs/latest/development/plugins/) - [Volcano documentation](https://volcano.sh/en/docs/)