199 lines
3.2 KiB
Markdown
199 lines
3.2 KiB
Markdown
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 <headlamp-pod>
|
|
🔴 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 👍
|
|
|
|
|
|
|
|
|