Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 60d76f1cb2 | |||
| 0d72d07048 | |||
| daad91880c | |||
| b9137958f0 | |||
| 37a2232178 | |||
| 56eb0761dd | |||
| 18c6a03c0c | |||
| cbd86f696d | |||
| 510affbe1a | |||
| fcb2e5f9fd | |||
| a34802b477 | |||
| e5e681b415 |
@@ -10,6 +10,7 @@ on:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
release:
|
||||
|
||||
@@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
Headlamp plugin for Intel GPU device plugin visibility and monitoring. Read-only — monitors GpuDevicePlugin CRDs, GPU-capable nodes, pods requesting Intel GPU resources, and real-time power metrics via Prometheus. No cluster write operations.
|
||||
|
||||
- **Plugin name**: `headlamp-intel-gpu`
|
||||
- **Plugin name**: `intel-gpu`
|
||||
- **Target**: Headlamp >= v0.20.0
|
||||
- **Data sources**: GpuDevicePlugin CRDs (`deviceplugin.intel.com/v1`), Nodes, Pods (all namespaces), Prometheus (node-exporter i915 hwmon)
|
||||
- **Reference plugin**: `../headlamp-kube-vip-plugin`
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# Installation Policy
|
||||
|
||||
## Approved Installation Method
|
||||
|
||||
**The ONLY approved method for installing this plugin is via [Artifact Hub](https://artifacthub.io/) using the Headlamp plugin installer.**
|
||||
|
||||
No other installation method is acceptable. This includes but is not limited to:
|
||||
|
||||
- Direct installation from GitHub release assets
|
||||
- Manual npm pack / tarball extraction
|
||||
- initContainer workarounds that bypass Artifact Hub
|
||||
- Direct file copy or sidecar injection
|
||||
|
||||
## Enforcement
|
||||
|
||||
All deployment configurations, CI/CD pipelines, and documentation MUST reference Artifact Hub as the sole plugin distribution channel. Any pull request that introduces an alternative installation method will be rejected.
|
||||
|
||||
## Rationale
|
||||
|
||||
Artifact Hub provides verified checksums, consistent versioning, and a standard discovery mechanism for the CNCF ecosystem. Bypassing it introduces security and integrity risks.
|
||||
|
||||
---
|
||||
|
||||
*This policy is set by the CTO and approved by the CEO of Privileged Escalation.*
|
||||
@@ -18,29 +18,7 @@ A [Headlamp](https://headlamp.dev/) plugin providing visibility into [Intel GPU
|
||||
|
||||
## Installation
|
||||
|
||||
### Plugin Manager (Headlamp UI)
|
||||
|
||||
Search for `headlamp-intel-gpu` in the Headlamp Plugin Manager.
|
||||
|
||||
### Manual
|
||||
|
||||
```bash
|
||||
# Download the latest release tarball
|
||||
curl -LO https://github.com/privilegedescalation/headlamp-intel-gpu-plugin/releases/latest/download/headlamp-intel-gpu-*.tar.gz
|
||||
|
||||
# Extract to Headlamp plugins directory
|
||||
mkdir -p ~/.config/Headlamp/plugins
|
||||
tar -xzf headlamp-intel-gpu-*.tar.gz -C ~/.config/Headlamp/plugins/
|
||||
```
|
||||
|
||||
### From Source
|
||||
|
||||
```bash
|
||||
git clone https://github.com/privilegedescalation/headlamp-intel-gpu-plugin.git
|
||||
cd headlamp-intel-gpu-plugin
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
Search for `headlamp-intel-gpu` in the Headlamp Plugin Manager (Settings → Plugins → Catalog).
|
||||
|
||||
## Requirements
|
||||
|
||||
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
version: "0.4.2"
|
||||
version: "0.4.3"
|
||||
name: headlamp-intel-gpu
|
||||
displayName: Intel GPU
|
||||
description: >-
|
||||
@@ -61,7 +61,7 @@ changes:
|
||||
description: "Resolve ESLint/Prettier indent conflict by disabling ESLint indent rule (Prettier is formatting authority)"
|
||||
|
||||
annotations:
|
||||
headlamp/plugin/archive-url: "https://github.com/privilegedescalation/headlamp-intel-gpu-plugin/releases/download/v0.4.2/headlamp-intel-gpu-0.4.2.tar.gz"
|
||||
headlamp/plugin/archive-checksum: sha256:0713b099a79ed63ea30675fee96f2a70e37471507d4135b529df158a09960492
|
||||
headlamp/plugin/archive-url: "https://github.com/privilegedescalation/headlamp-intel-gpu-plugin/releases/download/v0.4.3/intel-gpu-0.4.3.tar.gz"
|
||||
headlamp/plugin/archive-checksum: sha256:d9c78b3d678d3e6b92c81315bfed88bd22ec4f5cd63578467206727244db7dab
|
||||
headlamp/plugin/version-compat: ">=0.20.0"
|
||||
headlamp/plugin/distro-compat: "in-cluster,web,app"
|
||||
|
||||
Generated
+802
-526
File diff suppressed because it is too large
Load Diff
+19
-3
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "headlamp-intel-gpu",
|
||||
"version": "0.4.2",
|
||||
"name": "intel-gpu",
|
||||
"version": "0.4.3",
|
||||
"description": "Headlamp plugin for Intel GPU device plugin visibility and monitoring",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -24,7 +24,23 @@
|
||||
"test": "vitest run",
|
||||
"test:watch": "vitest"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@kinvolk/headlamp-plugin": "^0.13.0"
|
||||
"@kinvolk/headlamp-plugin": "^0.13.0",
|
||||
"@testing-library/jest-dom": "^6.4.8",
|
||||
"@testing-library/react": "^16.0.0",
|
||||
"@testing-library/user-event": "^14.5.2",
|
||||
"jsdom": "^24.0.0",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-router-dom": "^5.3.0",
|
||||
"vitest": "^3.0.5"
|
||||
},
|
||||
"overrides": {
|
||||
"tar": "^7.5.11",
|
||||
"undici": "^7.24.3"
|
||||
}
|
||||
}
|
||||
|
||||
+34
-34
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* headlamp-intel-gpu-plugin — entry point.
|
||||
* intel-gpu-plugin — entry point.
|
||||
*
|
||||
* Registers sidebar entries, routes, detail view sections, and table column
|
||||
* processors for Intel GPU device plugin visibility in Headlamp.
|
||||
@@ -34,49 +34,49 @@ import PodsPage from './components/PodsPage';
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: null,
|
||||
name: 'headlamp-intel-gpu',
|
||||
label: 'headlamp-intel-gpu',
|
||||
url: '/headlamp-intel-gpu',
|
||||
name: 'intel-gpu',
|
||||
label: 'intel-gpu',
|
||||
url: '/intel-gpu',
|
||||
icon: 'mdi:gpu',
|
||||
});
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: 'headlamp-intel-gpu',
|
||||
name: 'headlamp-intel-gpu-overview',
|
||||
parent: 'intel-gpu',
|
||||
name: 'intel-gpu-overview',
|
||||
label: 'Overview',
|
||||
url: '/headlamp-intel-gpu',
|
||||
url: '/intel-gpu',
|
||||
icon: 'mdi:view-dashboard',
|
||||
});
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: 'headlamp-intel-gpu',
|
||||
name: 'headlamp-intel-gpu-device-plugins',
|
||||
parent: 'intel-gpu',
|
||||
name: 'intel-gpu-device-plugins',
|
||||
label: 'Device Plugins',
|
||||
url: '/headlamp-intel-gpu/device-plugins',
|
||||
url: '/intel-gpu/device-plugins',
|
||||
icon: 'mdi:chip',
|
||||
});
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: 'headlamp-intel-gpu',
|
||||
name: 'headlamp-intel-gpu-nodes',
|
||||
parent: 'intel-gpu',
|
||||
name: 'intel-gpu-nodes',
|
||||
label: 'GPU Nodes',
|
||||
url: '/headlamp-intel-gpu/nodes',
|
||||
url: '/intel-gpu/nodes',
|
||||
icon: 'mdi:server',
|
||||
});
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: 'headlamp-intel-gpu',
|
||||
name: 'headlamp-intel-gpu-pods',
|
||||
parent: 'intel-gpu',
|
||||
name: 'intel-gpu-pods',
|
||||
label: 'GPU Pods',
|
||||
url: '/headlamp-intel-gpu/pods',
|
||||
url: '/intel-gpu/pods',
|
||||
icon: 'mdi:cube-outline',
|
||||
});
|
||||
|
||||
registerSidebarEntry({
|
||||
parent: 'headlamp-intel-gpu',
|
||||
name: 'headlamp-intel-gpu-metrics',
|
||||
parent: 'intel-gpu',
|
||||
name: 'intel-gpu-metrics',
|
||||
label: 'Metrics',
|
||||
url: '/headlamp-intel-gpu/metrics',
|
||||
url: '/intel-gpu/metrics',
|
||||
icon: 'mdi:chart-line',
|
||||
});
|
||||
|
||||
@@ -85,9 +85,9 @@ registerSidebarEntry({
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
registerRoute({
|
||||
path: '/headlamp-intel-gpu',
|
||||
sidebar: 'headlamp-intel-gpu-overview',
|
||||
name: 'headlamp-intel-gpu-overview',
|
||||
path: '/intel-gpu',
|
||||
sidebar: 'intel-gpu-overview',
|
||||
name: 'intel-gpu-overview',
|
||||
exact: true,
|
||||
component: () => (
|
||||
<IntelGpuDataProvider>
|
||||
@@ -97,9 +97,9 @@ registerRoute({
|
||||
});
|
||||
|
||||
registerRoute({
|
||||
path: '/headlamp-intel-gpu/device-plugins',
|
||||
sidebar: 'headlamp-intel-gpu-device-plugins',
|
||||
name: 'headlamp-intel-gpu-device-plugins',
|
||||
path: '/intel-gpu/device-plugins',
|
||||
sidebar: 'intel-gpu-device-plugins',
|
||||
name: 'intel-gpu-device-plugins',
|
||||
exact: true,
|
||||
component: () => (
|
||||
<IntelGpuDataProvider>
|
||||
@@ -109,9 +109,9 @@ registerRoute({
|
||||
});
|
||||
|
||||
registerRoute({
|
||||
path: '/headlamp-intel-gpu/nodes',
|
||||
sidebar: 'headlamp-intel-gpu-nodes',
|
||||
name: 'headlamp-intel-gpu-nodes',
|
||||
path: '/intel-gpu/nodes',
|
||||
sidebar: 'intel-gpu-nodes',
|
||||
name: 'intel-gpu-nodes',
|
||||
exact: true,
|
||||
component: () => (
|
||||
<IntelGpuDataProvider>
|
||||
@@ -121,9 +121,9 @@ registerRoute({
|
||||
});
|
||||
|
||||
registerRoute({
|
||||
path: '/headlamp-intel-gpu/pods',
|
||||
sidebar: 'headlamp-intel-gpu-pods',
|
||||
name: 'headlamp-intel-gpu-pods',
|
||||
path: '/intel-gpu/pods',
|
||||
sidebar: 'intel-gpu-pods',
|
||||
name: 'intel-gpu-pods',
|
||||
exact: true,
|
||||
component: () => (
|
||||
<IntelGpuDataProvider>
|
||||
@@ -133,9 +133,9 @@ registerRoute({
|
||||
});
|
||||
|
||||
registerRoute({
|
||||
path: '/headlamp-intel-gpu/metrics',
|
||||
sidebar: 'headlamp-intel-gpu-metrics',
|
||||
name: 'headlamp-intel-gpu-metrics',
|
||||
path: '/intel-gpu/metrics',
|
||||
sidebar: 'intel-gpu-metrics',
|
||||
name: 'intel-gpu-metrics',
|
||||
exact: true,
|
||||
component: () => (
|
||||
<IntelGpuDataProvider>
|
||||
|
||||
Reference in New Issue
Block a user