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)
- Plugin builden npm install npm run build
Das erzeugt:
dist/index.js
- 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
- 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)
- Plugin muss gebaut sein npm run build
- 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 👍