diff --git a/README.md b/README.md new file mode 100644 index 0000000..4ac166c --- /dev/null +++ b/README.md @@ -0,0 +1,198 @@ +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 👍 + + + +