A minimal Headlamp plugin that surfaces Kmesh resources as first-class views in the Headlamp UI. Built as the seed for the LFX 2026-T2 mentorship project — Integrating Kmesh into Headlamp UI.
Seed implementation. Two views are wired up; nothing else is. Visual polish, tests, eBPF map view, cluster summary, and per-resource health indicators are deliberately deferred to the mentorship project.
| View | Path | Backed by | Notes |
|---|---|---|---|
| Kmesh → Node Info | /c/<cluster>/kmesh/nodes |
KmeshNodeInfo CR (kmesh.net/v1alpha1, namespaced) |
The only CRD Kmesh ships. Detail view is auto-generated by Headlamp's DetailsGrid (pretty-printed YAML, events, metadata). |
| Kmesh → Waypoints | /c/<cluster>/kmesh/waypoints |
gateway.networking.k8s.io/v1.Gateway filtered by spec.gatewayClassName == 'istio-waypoint' |
Row clicks link to Headlamp's built-in Gateway detail page. |
Three findings from reading Kmesh's source informed the resource model:
- Kmesh ships exactly one CRD of its own.
KmeshNodeInfo(kmesh.net/v1alpha1, namespaced) carries IPsec wiring per node (addresses, bootID, podCIDRs, spi). Itsstatusschema is currently empty (type: objectwith no properties), which limits what the plugin can render for health indicators today — see kmesh#1693 for the proposedstatus.conditionsextension. - Waypoints are not a Kmesh CRD.
ctl/waypoint/waypoint.go:130filtersGatewayresources by the upstream Istio constantWaypointGatewayClassName("istio-waypoint"). The plugin reuses Headlamp's existingGatewayresource class rather than declaring a new one. - eBPF map state is exposed over HTTP, not as a CRD. The kmesh-daemon pod's status server (
pkg/status/status_server.go) serves/debug/config_dump/bpf/{kernel-native,dual-engine}on port 15200. A future iteration of this plugin will proxy those endpoints via Headlamp'sApiProxy. Not implemented in this seed.
Requires Node ≥ 20.11.1, npm ≥ 10.
npm install
npm run start # watches src/ and rebuilds into the Headlamp plugin dirVerify the build pipeline:
npm run tsc
npm run lint
npm run buildTo see the plugin loaded, run Headlamp pointing at a cluster that has Kmesh installed (helm install kmesh kmesh-net/kmesh against a kind/minikube cluster — see Kmesh's docs).
- Per-resource health and readiness indicators for
KmeshNodeInfo(gated on the schema extension proposed in kmesh#1693) - eBPF map view backed by the daemon's
/debug/config_dump/bpf/*HTTP endpoints viaApiProxy - Cluster-level Kmesh component summary (DaemonSet pod health, mode detection, version)
- Related-pod views for waypoints (pods labelled
gateway.istio.io/managed) - Unit/component tests and a kind-based e2e smoke test
- Helm/manifest install docs with screenshots