Webhooks in Kubernetes erstellen
Webhooks sind ein leistungsstarker Erweiterungsmechanismus in Kubernetes und ermöglichen es, den Funktionsumfang des Kubernetes-API-Servers zu erweitern.
- Dr. Michael Stal
In Anlehnung an den Physiker Richard Feynmann lässt sich sagen: "Wer glaubt, Kubernetes zu verstehen, versteht es nicht." Der Containerorchestrierer bietet so viele Stellschrauben und Konfigurationsmöglichkeiten, dass Entwickler zuweilen den Wald vor lauter Bäumen nicht sehen. Die Mühe der Einarbeitung lohnt sich allerdings, da Kubernetes ein mächtiges Instrumentarium an die Hand gibt, um komplexe verteilte Systeme zu entwickeln, die Qualitätsattribute wie Skalierbarkeit und Resilienz gleich mitbringen. Auch das Herz von Kubernetes, die Control Plane und ganz speziell der API-Server lassen sich an eigene Wünsche anpassen. Man muss sich nur trauen. Ein mächtiges Instrument dafür sind Webhooks.
- Webhooks erweitern den standardmäßigen Funktionsumfang von Kubernetes.
- Sie fungieren als HTTP-Callbacks, die der Kubernetes-API-Server aufruft, wenn bestimmte Ereignisse im Cluster auftreten.
- Während Validating Admission Webhooks Regeln und Richtlinien prüfen, um Ressourcen wie Pods freizugeben, können Mutating Admission Webhooks auch Änderungen an den betroffenen Ressourcen vornehmen.
- Die Implementierung von Webhooks ist zwar komplex, enthält aber immer die gleichen Muster.
Was sind Kubernetes-Webhooks?
Webhooks fungieren als HTTP-Callbacks, die der Kubernetes-API-Server aufruft, wenn bestimmte Ereignisse im Cluster auftreten. Dieser Artikel zeigt, wie sich Webhooks in Kubernetes gezielt einsetzen lassen, und konzentriert sich dabei auf Admission Webhooks. In Kubernetes gibt es zwei Haupttypen von Admission Webhooks, die unterschiedliche Zwecke erfüllen und die der Kubernetes API-Server zu verschiedenen Zeitpunkten während der Verarbeitung einer Anfrage aufruft. Anfrage heißt in diesem Kontext AdmissionRequest. Kubernetes soll beispielsweise einen Service, einen Pod oder andere Ressourcen erzeugen oder ändern. Das geschieht etwa dann, wenn ein Benutzer den folgenden Kommandozeilenbefehl eingibt, um einen Pod zu erzeugen, dessen Konfiguration sich in der Konfigurationsdatei pod.yaml findet:
create -f ./pod.yaml
Nicht nur Nutzer kreieren Pods, sondern auch Kubernetes selbst. StĂĽrzt etwa ein Pod ab oder reagiert nicht mehr, veranlasst die Control Plane die Kreation eines neuen Pods. Doch zurĂĽck zu den zwei Haupttypen von Admission Webhooks.
Das war die Leseprobe unseres heise-Plus-Artikels "Webhooks in Kubernetes erstellen". Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.