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:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
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.
|
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
|
- **Target**: Headlamp >= v0.20.0
|
||||||
- **Data sources**: GpuDevicePlugin CRDs (`deviceplugin.intel.com/v1`), Nodes, Pods (all namespaces), Prometheus (node-exporter i915 hwmon)
|
- **Data sources**: GpuDevicePlugin CRDs (`deviceplugin.intel.com/v1`), Nodes, Pods (all namespaces), Prometheus (node-exporter i915 hwmon)
|
||||||
- **Reference plugin**: `../headlamp-kube-vip-plugin`
|
- **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
|
## Installation
|
||||||
|
|
||||||
### Plugin Manager (Headlamp UI)
|
Search for `headlamp-intel-gpu` in the Headlamp Plugin Manager (Settings → Plugins → Catalog).
|
||||||
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -1,4 +1,4 @@
|
|||||||
version: "0.4.2"
|
version: "0.4.3"
|
||||||
name: headlamp-intel-gpu
|
name: headlamp-intel-gpu
|
||||||
displayName: Intel GPU
|
displayName: Intel GPU
|
||||||
description: >-
|
description: >-
|
||||||
@@ -61,7 +61,7 @@ changes:
|
|||||||
description: "Resolve ESLint/Prettier indent conflict by disabling ESLint indent rule (Prettier is formatting authority)"
|
description: "Resolve ESLint/Prettier indent conflict by disabling ESLint indent rule (Prettier is formatting authority)"
|
||||||
|
|
||||||
annotations:
|
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-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:0713b099a79ed63ea30675fee96f2a70e37471507d4135b529df158a09960492
|
headlamp/plugin/archive-checksum: sha256:d9c78b3d678d3e6b92c81315bfed88bd22ec4f5cd63578467206727244db7dab
|
||||||
headlamp/plugin/version-compat: ">=0.20.0"
|
headlamp/plugin/version-compat: ">=0.20.0"
|
||||||
headlamp/plugin/distro-compat: "in-cluster,web,app"
|
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",
|
"name": "intel-gpu",
|
||||||
"version": "0.4.2",
|
"version": "0.4.3",
|
||||||
"description": "Headlamp plugin for Intel GPU device plugin visibility and monitoring",
|
"description": "Headlamp plugin for Intel GPU device plugin visibility and monitoring",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -24,7 +24,23 @@
|
|||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"test:watch": "vitest"
|
"test:watch": "vitest"
|
||||||
},
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^18.0.0",
|
||||||
|
"react-dom": "^18.0.0"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"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
|
* Registers sidebar entries, routes, detail view sections, and table column
|
||||||
* processors for Intel GPU device plugin visibility in Headlamp.
|
* processors for Intel GPU device plugin visibility in Headlamp.
|
||||||
@@ -34,49 +34,49 @@ import PodsPage from './components/PodsPage';
|
|||||||
|
|
||||||
registerSidebarEntry({
|
registerSidebarEntry({
|
||||||
parent: null,
|
parent: null,
|
||||||
name: 'headlamp-intel-gpu',
|
name: 'intel-gpu',
|
||||||
label: 'headlamp-intel-gpu',
|
label: 'intel-gpu',
|
||||||
url: '/headlamp-intel-gpu',
|
url: '/intel-gpu',
|
||||||
icon: 'mdi:gpu',
|
icon: 'mdi:gpu',
|
||||||
});
|
});
|
||||||
|
|
||||||
registerSidebarEntry({
|
registerSidebarEntry({
|
||||||
parent: 'headlamp-intel-gpu',
|
parent: 'intel-gpu',
|
||||||
name: 'headlamp-intel-gpu-overview',
|
name: 'intel-gpu-overview',
|
||||||
label: 'Overview',
|
label: 'Overview',
|
||||||
url: '/headlamp-intel-gpu',
|
url: '/intel-gpu',
|
||||||
icon: 'mdi:view-dashboard',
|
icon: 'mdi:view-dashboard',
|
||||||
});
|
});
|
||||||
|
|
||||||
registerSidebarEntry({
|
registerSidebarEntry({
|
||||||
parent: 'headlamp-intel-gpu',
|
parent: 'intel-gpu',
|
||||||
name: 'headlamp-intel-gpu-device-plugins',
|
name: 'intel-gpu-device-plugins',
|
||||||
label: 'Device Plugins',
|
label: 'Device Plugins',
|
||||||
url: '/headlamp-intel-gpu/device-plugins',
|
url: '/intel-gpu/device-plugins',
|
||||||
icon: 'mdi:chip',
|
icon: 'mdi:chip',
|
||||||
});
|
});
|
||||||
|
|
||||||
registerSidebarEntry({
|
registerSidebarEntry({
|
||||||
parent: 'headlamp-intel-gpu',
|
parent: 'intel-gpu',
|
||||||
name: 'headlamp-intel-gpu-nodes',
|
name: 'intel-gpu-nodes',
|
||||||
label: 'GPU Nodes',
|
label: 'GPU Nodes',
|
||||||
url: '/headlamp-intel-gpu/nodes',
|
url: '/intel-gpu/nodes',
|
||||||
icon: 'mdi:server',
|
icon: 'mdi:server',
|
||||||
});
|
});
|
||||||
|
|
||||||
registerSidebarEntry({
|
registerSidebarEntry({
|
||||||
parent: 'headlamp-intel-gpu',
|
parent: 'intel-gpu',
|
||||||
name: 'headlamp-intel-gpu-pods',
|
name: 'intel-gpu-pods',
|
||||||
label: 'GPU Pods',
|
label: 'GPU Pods',
|
||||||
url: '/headlamp-intel-gpu/pods',
|
url: '/intel-gpu/pods',
|
||||||
icon: 'mdi:cube-outline',
|
icon: 'mdi:cube-outline',
|
||||||
});
|
});
|
||||||
|
|
||||||
registerSidebarEntry({
|
registerSidebarEntry({
|
||||||
parent: 'headlamp-intel-gpu',
|
parent: 'intel-gpu',
|
||||||
name: 'headlamp-intel-gpu-metrics',
|
name: 'intel-gpu-metrics',
|
||||||
label: 'Metrics',
|
label: 'Metrics',
|
||||||
url: '/headlamp-intel-gpu/metrics',
|
url: '/intel-gpu/metrics',
|
||||||
icon: 'mdi:chart-line',
|
icon: 'mdi:chart-line',
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -85,9 +85,9 @@ registerSidebarEntry({
|
|||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
registerRoute({
|
registerRoute({
|
||||||
path: '/headlamp-intel-gpu',
|
path: '/intel-gpu',
|
||||||
sidebar: 'headlamp-intel-gpu-overview',
|
sidebar: 'intel-gpu-overview',
|
||||||
name: 'headlamp-intel-gpu-overview',
|
name: 'intel-gpu-overview',
|
||||||
exact: true,
|
exact: true,
|
||||||
component: () => (
|
component: () => (
|
||||||
<IntelGpuDataProvider>
|
<IntelGpuDataProvider>
|
||||||
@@ -97,9 +97,9 @@ registerRoute({
|
|||||||
});
|
});
|
||||||
|
|
||||||
registerRoute({
|
registerRoute({
|
||||||
path: '/headlamp-intel-gpu/device-plugins',
|
path: '/intel-gpu/device-plugins',
|
||||||
sidebar: 'headlamp-intel-gpu-device-plugins',
|
sidebar: 'intel-gpu-device-plugins',
|
||||||
name: 'headlamp-intel-gpu-device-plugins',
|
name: 'intel-gpu-device-plugins',
|
||||||
exact: true,
|
exact: true,
|
||||||
component: () => (
|
component: () => (
|
||||||
<IntelGpuDataProvider>
|
<IntelGpuDataProvider>
|
||||||
@@ -109,9 +109,9 @@ registerRoute({
|
|||||||
});
|
});
|
||||||
|
|
||||||
registerRoute({
|
registerRoute({
|
||||||
path: '/headlamp-intel-gpu/nodes',
|
path: '/intel-gpu/nodes',
|
||||||
sidebar: 'headlamp-intel-gpu-nodes',
|
sidebar: 'intel-gpu-nodes',
|
||||||
name: 'headlamp-intel-gpu-nodes',
|
name: 'intel-gpu-nodes',
|
||||||
exact: true,
|
exact: true,
|
||||||
component: () => (
|
component: () => (
|
||||||
<IntelGpuDataProvider>
|
<IntelGpuDataProvider>
|
||||||
@@ -121,9 +121,9 @@ registerRoute({
|
|||||||
});
|
});
|
||||||
|
|
||||||
registerRoute({
|
registerRoute({
|
||||||
path: '/headlamp-intel-gpu/pods',
|
path: '/intel-gpu/pods',
|
||||||
sidebar: 'headlamp-intel-gpu-pods',
|
sidebar: 'intel-gpu-pods',
|
||||||
name: 'headlamp-intel-gpu-pods',
|
name: 'intel-gpu-pods',
|
||||||
exact: true,
|
exact: true,
|
||||||
component: () => (
|
component: () => (
|
||||||
<IntelGpuDataProvider>
|
<IntelGpuDataProvider>
|
||||||
@@ -133,9 +133,9 @@ registerRoute({
|
|||||||
});
|
});
|
||||||
|
|
||||||
registerRoute({
|
registerRoute({
|
||||||
path: '/headlamp-intel-gpu/metrics',
|
path: '/intel-gpu/metrics',
|
||||||
sidebar: 'headlamp-intel-gpu-metrics',
|
sidebar: 'intel-gpu-metrics',
|
||||||
name: 'headlamp-intel-gpu-metrics',
|
name: 'intel-gpu-metrics',
|
||||||
exact: true,
|
exact: true,
|
||||||
component: () => (
|
component: () => (
|
||||||
<IntelGpuDataProvider>
|
<IntelGpuDataProvider>
|
||||||
|
|||||||
Reference in New Issue
Block a user