Traefik Plugins erstellen – so einfach kann es sein!
Traefik ist nicht nur ein leistungsstarker Reverse Proxy, sondern bietet mit seinem Plug-in-System die Möglichkeit, eigene Middleware-Module zu entwickeln. In diesem Artikel zeigen wir dir Schritt für Schritt, wie du Traefik Plugins erstellst – inklusive Beispielcode für Authentifizierung, Rate-Limiting und mehr.
🚀 Warum eigene Traefik Plugins?
Das Plug-in-System von Traefik Proxy basiert auf Go (Golang) und ermöglicht dir, eigene Middleware-Funktionen zu erstellen – z. B. für:
- 🔒 Benutzerdefinierte Authentifizierung
- 🚫 Dynamisches Rate-Limiting
- 🛠 Rewriting oder Header-Logik
- 🧠 Intelligente Weiterleitungen basierend auf Kontext
Gerade für Cloud-native Umgebungen (Docker, Kubernetes) ist das ein riesiger Vorteil, weil du den Reverse Proxy als intelligente Steuerzentrale verwenden kannst.
⚙️ Voraussetzungen
- Traefik v2.4+ oder neuer
- Eine Go-Entwicklungsumgebung (Go ≥ 1.18)
- Docker oder lokales Setup zum Testen
- Traefik auf deinem Cluster oder Server
📦 Schritt-für-Schritt: Ein eigenes Traefik Plugin schreiben
1. 🔧 Projektstruktur anlegen
Erstelle einen Plugin-Ordner:
mkdir my-traefik-plugin
cd my-traefik-plugin
go.mod
:
module github.com/deinbenutzername/my-traefik-plugin
go 1.18
require (
github.com/traefik/plugindemo v0.0.0
)
2. 🧠 Beispiel: Middleware mit Logging
Erstelle myplugin.go
:
package myplugin
import (
"context"
"net/http"
"github.com/traefik/traefik/v2/pkg/middlewares"
)
type Config struct {
Message string
}
func CreateConfig() *Config {
return &Config{Message: "Standardlog"}
}
type MyPlugin struct {
next http.Handler
name string
message string
}
func New(ctx context.Context, next http.Handler, config *Config, name string) (http.Handler, error) {
return &MyPlugin{
next: next,
name: name,
message: config.Message,
}, nil
}
func (a *MyPlugin) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
log.Printf("Anfrage erhalten für: %s", req.URL.Path)
a.next.ServeHTTP(rw, req)
}
3. 🧪 Plugin in Traefik einbinden
Bearbeite deine traefik.yml
:
experimental:
plugins:
myplugin:
moduleName: "github.com/deinbenutzername/my-traefik-plugin"
version: "v0.0.1"
api:
dashboard: true
entryPoints:
web:
address: ":80"
http:
routers:
example:
rule: "Host(`howtonow.de`)"
entryPoints: ["web"]
service: "dummy"
middlewares: ["myplugin@plugin"]
🔐 Weitere Beispiele
✅ Authentifizierung (Basic Auth als Plugin)
Nutze Header-Überprüfung oder JSON-Token-Logik im Plugin selbst.
🔍 Vorteil: Kein externes Tool notwendig – alles im Proxy erledigt.
📉 Rate Limiting Plugin
Zähle IPs oder Header mit eigener Logik und blockiere bei Überschreitung.
⚠️ Hinweise zum Plugin-Hosting
- Plugins müssen öffentlich auf GitHub sein.
- Versionierung via
go mod
und Git-Tags erforderlich - Container-Registrierung (DockerHub/GitHub Registry) optional
🧠 Fazit
Mit dem Traefik Plugin-System hebst du Reverse Proxy-Setups auf ein neues Level:
Mehr Kontrolle, mehr Flexibilität, mehr Sicherheit – direkt im Datenfluss.
2 Pingbacks