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 modund 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.
3 Pingbacks