2026-06-28 19:14:14 +00:00
2026-06-28 19:14:14 +00:00
2026-06-28 18:26:30 +00:00
2026-06-28 19:01:11 +00:00
2026-06-28 18:26:58 +00:00
2026-06-28 18:27:26 +00:00

Install Plugin

git clone https://github.com/DEIN-REPO/headlamp-logviewer.git cd headlamp-logviewer npm install

npm run dev


OPTION B (empfohlen für K8s / Installation)

  1. Plugin builden npm install npm run build

Das erzeugt:

dist/index.js

  1. Plugin in Headlamp verfügbar machen

Du hast 3 Möglichkeiten:

🔹 Variante B1: Lokaler Plugin Pfad (einfach)

Wenn Headlamp lokal läuft:

headlamp --plugins-path=/path/to/headlamp-logviewer/dist

oder als Env:

HEADLAMP_PLUGINS_PATH=/opt/headlamp-plugins

👉 Dort legst du index.js rein.

🔹 Variante B2: Plugin in Container mounten (K8s)

Wenn Headlamp im Cluster läuft:

volumeMounts:

  • name: plugins mountPath: /headlamp/plugins volumes:
  • name: plugins configMap: name: headlamp-plugins

Oder einfacher (besser):

👉 Docker Image mit Plugin bauen

🔹 Variante B3: Custom Headlamp Image (PRO) FROM ghcr.io/headlamp-k8s/headlamp:latest

COPY dist /headlamp/plugins

Dann:

docker build -t my-headlamp:plugins . ⚙️ 3. Plugin wird automatisch geladen wenn:

Im index.tsx:

registerPlugin({ name: "logs-plugin", routes: [...] });

👉 Headlamp erkennt das beim Start.

🧪 4. Prüfen ob Plugin geladen ist

Im Browser:

Sidebar öffnen Nach “Logs” schauen

Oder Debug:

kubectl logs 🔴 Häufige Fehler Plugin erscheint nicht

👉 Ursachen:

dist/index.js fehlt falscher plugins-path Plugin nicht gebaut (npm run build) falscher export (default init fehlt) Route wird nicht angezeigt

👉 Prüfe:

sidebar: { label: "Logs" } Kubernetes API Fehler

👉 Dann fehlt RBAC:

resources:

  • pods
  • pods/log verbs:
  • get
  • list
  • watch 🧠 Best Practice Setup (empfohlen)

Für dich (Flux + Git Repo + MicroK8s Setup):

👉 So würde ich es sauber machen:

Git Repo ↓ (CI) npm run build ↓ Docker Image ↓ Headlamp Deployment (custom image) ↓ Plugin automatisch verfügbar


  1. Dockerfile (nur das Nötigste)

Im Root deines Plugin-Repos:

FROM node:20-alpine AS build

WORKDIR /app

COPY package*.json ./ RUN npm install

COPY . . RUN npm run build

FROM ghcr.io/headlamp-k8s/headlamp:latest

COPY --from=build /app/dist /headlamp/plugins 🏗️ 2. Image bauen docker build -t headlamp-with-logs:latest . 🚀 3. Headlamp mit Plugin starten (lokal Test) docker run -p 4466:4466 headlamp-with-logs:latest

Dann öffnen:

http://localhost:4466 ☸️ 4. Kubernetes Deployment (optional) apiVersion: apps/v1 kind: Deployment metadata: name: headlamp spec: replicas: 1 selector: matchLabels: app: headlamp template: metadata: labels: app: headlamp spec: containers: - name: headlamp image: headlamp-with-logs:latest ports: - containerPort: 4466 ⚠️ Wichtig (nur 2 Dinge)

  1. Plugin muss gebaut sein npm run build
  2. Ergebnis muss existieren dist/index.js Ergebnis

Du hast jetzt:

Headlamp Image inkl. deinem Log Plugin sofort beim Start verfügbar kein extra Mounting nötig 💡 Optional (wenn du es “richtig sauber” willst)

Ich kann dir noch eine Version machen mit:

Multi-stage caching (schneller Build) GitHub Actions build + push FluxCD Image update Versioniertes Plugin system

Sag einfach 👍

S
Description
No description provided
Readme 36 KiB
Languages
TypeScript 96.6%
Dockerfile 3.4%