Repository navigation
WIP : Velero plugin for Headlamp-0.1.0-alpha draft release notes #1371
Description
Velero Plugin for Headlamp 0.1.0-alpha
First public release. See Velero backup coverage on workloads, and browse Schedules, Backups, Restores, storage locations, and volume/datamover status in Headlamp. Read-only , no create/edit yet. Feedback welcome.
About
Velero
Velero is an open-source tool for backing up and restoring Kubernetes cluster resources and persistent volumes. It uses custom resources such as Schedule, Backup, and Restore to define when backups run, what they include, and how restores work. Backup data is stored in object storage configured through Velero (for example S3-compatible buckets). Learn more.
Headlamp
Headlamp is an open-source, extensible Kubernetes web UI. Its plugin system adds sidebar navigation, list/detail views, and contextual sections that feel native to the rest of the interface. Learn more.
Without this plugin, operators often jump between Headlamp, the Velero CLI, and kubectl to see if a workload is covered by a schedule, what backups exist, and whether restores succeeded.
This plugin brings that backup context into Headlamp: coverage panels on workload pages, plus Schedules, Backups, Restores, storage locations, and volume/datamover visibility — read-only in this first alpha, using your existing Kubernetes RBAC.
Demo
VELERO.4.mp4
Highlights
See if a Deployment is covered by a Velero schedule
When you open a Deployment (or StatefulSet / PVC / Namespace) in Headlamp, the plugin adds a coverage panel. It answers: “Is this workload included in a Velero Schedule?” You see matching schedules, cron, next run, and last backup status here — so you don’t have to switch to the Velero CLI.

Browse an Active Schedule with cron and last backup
A Schedule is Velero’s timer. This detail page shows shop-nightly is Active, runs every 2 minutes (@every 2m), backs up namespace shop, and points at the latest backup it created. Use this view to confirm the schedule is healthy and what it will protect next.
Inspect a Completed Backup of the shop namespace
A Backup is one saved point in time. Here shop-fs-volume-1 was triggered manually, included namespace shop, and finished Completed. That means the cluster objects (and volume data for this demo) were stored successfully and can be restored later.
See PodVolumeBackup when disk files were copied (kopia)
Object YAML alone is not enough when an app has a disk. PodVolumeBackup is Velero’s record that files from a pod volume were copied with kopia (FS backup). This row shows volume data on the shop-api pod finished Completed (59 B / 59 B). If you only back up manifests and no PVC, this table stays empty.
Inspect a Completed Restore from that Backup
A Restore rebuilds resources from a named Backup. This page shows restore shop-fs-restore-1 used backup shop-fs-volume-1, targeted namespace shop, reached Completed with progress 9/9 and no errors or warnings — the app came back after we deleted it.
See PodVolumeRestore when volume data is written back
PodVolumeRestore is the restore twin of PodVolumeBackup: kopia writes the saved files back onto the pod’s volume. Same pod/volume (shop-api / data), Completed at 59 B / 59 B. That’s how disk contents (not just Deployment YAML) return after a restore.
Check the Backup Storage Location (bucket) is Available
A Backup Storage Location (BSL) is the object-store “warehouse” (S3-compatible bucket). Here BSL default is Available, provider aws, bucket velero, access mode ReadWrite. If this is Unavailable, new backups fail even if Schedules still create Backup objects.
See the kopia Backup Repository for shop volume data
A Backup Repository is where Velero keeps kopia/restic volume data inside the BSL bucket. shop-default-kopia is Ready for namespace shop on storage location default. Manifest-only backups won’t create one; volume (FS) backups will.
Contributors
LFX Mentorship + Headlamp community review.
| Contributor | Role |
|---|---|
| @Pragati5-DEBUG | Implementation, docs, testing, demo |
| @illume | Mentor — Headlamp maintainer review & guidance |
| @shubham-pampattiwar | Mentor — Velero guidance (Shubham Pampattiwar) |
| @reasonerjt | Mentor / early Velero Headlamp prototype (Daniel Jiang) |
| headlamp-k8s | Maintainers |
Changelog
Major features
- Added backup coverage panels on Deployment, StatefulSet, PVC, and Namespace detail pages.
- Added schedule coverage matching using Velero include/exclude filters and label selectors.
- Added cron display, next-run estimation, and last backup status on coverage panels.
- Added a Velero sidebar section with Schedules, Backups, and Restores.
- Added native Schedule list and detail views.
- Added native Backup list and detail views.
- Added native Restore list and detail views.
- Added Backup Storage Location (BSL) list and detail views.
- Added Volume Snapshot Location (VSL) list and detail views.
- Added Backup Repository list and detail views.
- Added PodVolumeBackup and DataUpload tables on Backup detail when present.
- Added PodVolumeRestore and DataDownload tables on Restore detail when present.
- Added a configurable Velero namespace plugin setting (default
velero). - Added clear empty / not-installed state when Velero CRDs are missing.
- Added multi-cluster-aware lookups and list filters for Headlamp’s active cluster.
Key improvements
- Hardened coverage matching for namespace globs, paused schedules, FailedValidation, and unknown label-selector operators (fail closed).
- Improved
@everynext-run math andlastSkippedhandling for more reliable schedule timing. - Load schedule-scoped backups via
velero.io/schedule-namefor coverage while keeping the full Backups table in the sidebar. - Added status badges and phase display across Schedule, Backup, and Restore views.
- Added unit tests, Storybook coverage stories, and manual fixtures under
test-files/. - Documented Phase 1 / Phase 2 / Phase 3 behavior in the plugin README.
- Added RBAC notes for read access to Velero resources including storage and datamover CRDs.
Foundation
- Headlamp tracking issue: kubernetes-sigs/headlamp#5198
- Phase 1 (coverage panels): headlamp-k8s/plugins#877
- Phase 2 (Schedules / Backups / Restores): headlamp-k8s/plugins#1326
Known Limitations
- The plugin is read-only. It does not create, edit, delete, or trigger Schedules, Backups, or Restores.
- Namespace coverage shows schedules that target the namespace; it does not evaluate label selectors against every live object inside the namespace.
- Long Backup TTLs can still yield large histories; coverage uses the latest backup per schedule client-side.
- PodVolumeBackup / DataUpload (and restore-side twins) tables stay empty when the backup did not use volume FS or CSI datamover paths, or when those CRDs are not installed.
- The plugin does not replace the Velero CLI or full operational workflows (install, credentials, object-store setup).
- Advanced Velero operations and settings remain available through the Velero CLI and Kubernetes API.
What's Next
Phases 1–3 (coverage panels, Schedules/Backups/Restores, storage + datamover visibility) are in this alpha. Later phases planned:
Phase 4 — Create and manage backups from Headlamp
- Create on-demand Backups and Restores from the UI (Kubernetes API).
- Create, edit, pause/unpause, and delete Schedules.
- Forms and validation guided by Velero CR specs.
- RBAC-aware action visibility (hide actions the user cannot perform).
Phase 5 — Backup health overview dashboard
- Cluster-wide summary: recent backup status, schedule health, failed/partial runs.
- Storage location availability at a glance.
- Quick links from the dashboard into Schedules, Backups, and Restores.
Phase 6 — Maps and deeper Headlamp integration
- Show Velero resources on the Headlamp map view.
- Richer Backup / Restore progress, conditions, and error detail.
- More backup context on other Headlamp resource pages.
- Filtering and bulk workflows for large backup inventories.
Phase 7 — Polish, docs, and community
- Usability improvements from Headlamp and Velero user feedback.
- Expanded docs and RBAC examples.
- Blog post showcasing the plugin (LFX outcome).
- Prep for a non-alpha / catalog-ready release.
Feedback
This is the first public release of the Velero plugin for Headlamp. Feedback, bug reports, and feature ideas are welcome.
Bug reports: Open an issue
Feature requests: Start a discussion or open an issue against the Velero plugin tracking work
Contributing: Pull requests are welcome. See the repository contribution guidance.
Plugin source: headlamp-k8s/plugins/velero
Related Headlamp issue: #5198
License: Apache 2.0
Activity
[-]Velero Plugin for Headlamp — First Alpha (0.1.0-alpha)[/-][+]WIP : Velero plugin for Headlamp : first draft release notes[/+][-]WIP : Velero plugin for Headlamp : first draft release notes[/-][+]WIP : Velero plugin for Headlamp- 0.1.0-alpha draft release notes[/+][-]WIP : Velero plugin for Headlamp- 0.1.0-alpha draft release notes[/-][+]WIP : Velero plugin for Headlamp-0.1.0-alpha draft release notes[/+]