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 2. 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 👍