README.md hinzugefügt
This commit is contained in:
@@ -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 <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 👍
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user