You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -12,12 +13,19 @@ The plugin brings first-class multi-tenancy awareness to the Headlamp UI, includ
12
13
13
14
-**Tenant Switcher** — Multi-select tenant chooser in the app bar that scopes the entire UI to the selected tenants' namespaces.
14
15
-**Tenant Views** — Full list and detail pages for Tenants, including owners, state, namespace lists, and rich metadata (icon, description, links, banner) via annotations.
15
-
-**Capsule Overview** — At-a-glance dashboard with tenant activity, readiness of managed namespaces, Global Quotas, TenantResources, and replicated objects.
16
+
-**Capsule Overview** — Responsive Tenant, Quotas, and Replications rows for
-**Custom Quotas** — Dedicated list and detail views for both `CustomQuota` and `GlobalCustomQuota`, with usage pies, claims breakdown, and source definitions.
21
+
-**Global Resource Quotas** — Dedicated cluster-wide quota list with per-resource capacity health, plus aggregate and per-namespace consumption details in an animated relationship graph.
22
+
-**Native CRD Integration** — Opening supported Capsule objects from Headlamp's Custom Resources navigation uses the same rich plugin overviews and details, with canonical CR instance URLs rather than parallel pages.
23
+
-**Contextual Documentation** — Tenant, quota, ResourcePool, and replication detail headers include a documentation action directly beside Edit.
17
24
-**Tenant Resources** — Powerful support for `TenantResource` and `GlobalTenantResource`:
25
+
- Animated replication diagrams linking each TR/GTR to its managed objects
-**Readiness Visualization** — Consistent use of colored status indicators and small pie charts for readiness of namespaces, quotas, and managed objects.
23
31
-**Scoped Filtering** — Automatic namespace filter updates when navigating from tenant-owned resources.
@@ -48,20 +56,27 @@ pluginsManager:
48
56
3. Go to **Settings → Plugins → Load plugin from file** and select the downloaded archive.
49
57
4. The **Capsule** section will appear in the sidebar.
50
58
51
-
### Development / Hot Reload
59
+
### Development environment
60
+
61
+
See the [Development](#development) section below for the in-cluster workflow.
62
+
63
+
### Documentation URL
52
64
53
-
See the [Development](#development) section below.
65
+
Documentation actions use `https://projectcapsule.dev` by default. To use a
66
+
mirror or another documentation host, open **Settings → Plugins → capsule**, set
67
+
**Documentation base URL**, and save. The resource-specific `/docs/...` path and
68
+
anchor are appended to the configured base URL.
54
69
55
70
## Tenant Metadata Annotations
56
71
57
72
You can enrich how Tenants appear in the plugin by adding annotations to your `Tenant` resources.
| `info.projectcapsule.dev/banner` | Banner image at the top of the tenant detail | `https://example.com/tenant-banner.jpg` |
65
80
66
81
**Example:**
67
82
@@ -82,6 +97,10 @@ spec:
82
97
```
83
98
84
99
These annotations are used in the tenant chooser, tenant lists, tenant details, and the Capsule overview.
100
+
When one or more specific Tenants are selected, Headlamp also shows a secondary
101
+
context-tab row below the app bar. Each selected Tenant gets a tab (including
102
+
its configured icon), and the active tab exposes that Tenant's quick links. The
103
+
row is hidden for the unscoped **All Tenants** selection.
85
104
86
105
> **Note:** The `links` annotation must be a valid JSON array of objects containing at least `title` and `url`.
87
106
@@ -90,17 +109,25 @@ These annotations are used in the tenant chooser, tenant lists, tenant details,
90
109
The plugin provides rich support for Capsule's replication resources:
91
110
92
111
- Visual breakdown of what each `TenantResource` / `GlobalTenantResource` is configured to replicate.
112
+
- Animated flow from each replication resource to its live managed objects.
113
+
- Inline SSA ownership diff when a managed object is selected in the flow or inventory.
93
114
- Live view of the actual objects that have been applied (with SSA ownership information).
94
115
- Ability to trigger reconciliation directly from the UI.
95
116
- Support for both the modern `resources` array format and older flat resource definitions.
96
117
97
118
## Development
98
119
99
-
### Prerequisites
120
+
### In-cluster development (recommended)
121
+
122
+
The repository includes a repeatable environment that deploys Headlamp and the
123
+
locally built plugin into Kubernetes. It is optimized for kind and uses the
124
+
current kube context by default.
125
+
126
+
Prerequisites:
100
127
101
-
- Node.js (v20+ recommended)
128
+
- Node.js 22 or 24 (pinned by `.nvmrc`/`.node-version`) and npm 11+
129
+
- Docker, kubectl, Helm, and kind
102
130
- A Kubernetes cluster with Capsule CRDs installed
103
-
- Headlamp (desktop app or from source) connected to that cluster
104
131
- At least one `Tenant` that your user can list
105
132
106
133
### Getting Started
@@ -111,17 +138,41 @@ cd headlamp-plugin
111
138
npm install
112
139
```
113
140
114
-
### Running in Development Mode
141
+
Deploy or update Headlamp and the plugin:
142
+
143
+
```bash
144
+
make headlamp-deploy
145
+
```
146
+
147
+
Keep the port-forward running, then open <http://127.0.0.1:8081>:
148
+
149
+
```bash
150
+
make headlamp-port-forward
151
+
```
152
+
153
+
Generate a temporary token in another terminal and use it on Headlamp's login
154
+
screen:
155
+
156
+
```bash
157
+
make headlamp-token
158
+
```
159
+
160
+
For the normal edit/build/reload loop, change files under `src/` and run:
115
161
116
162
```bash
117
-
npm start
163
+
make headlamp-sync
118
164
```
119
165
120
-
This starts the development server on port `4466` by default.
166
+
Headlamp remains in-cluster while the rebuilt bundle is copied into its watched
167
+
plugin directory. See [`deploy/headlamp/README.md`](deploy/headlamp/README.md)
168
+
for configuration overrides, diagnostics, remote-cluster usage, and the local
169
+
development RBAC warning.
121
170
122
-
Then load the plugin in Headlamp using the **"Load plugin from URL"** feature (point it at `http://localhost:4466`).
171
+
### Standalone plugin server
123
172
124
-
> **Important:** The dev server only serves the plugin JavaScript. You must run it against a real Headlamp instance that is connected to a cluster with Capsule.
173
+
`npm start`still starts the plugin development server on port `4466`. Use this
174
+
when running Headlamp Desktop or Headlamp from source and load the plugin from
0 commit comments