Training Module
CI/CD Policy Gates — Policy-as-Code vor dem Deployment mit Kyverno-CLI & conftest
Dieses 90-Minuten-Modul löst eine Ankündigung ein, die im Modul
Kubernetes Admission Controllers & Policy Engines
bewusst offen blieb: Dort habt ihr die Regel “jeder Pod braucht ein
Label team” mit Kyverno und mit OPA Gatekeeper
am Cluster durchgesetzt – per Admission-Webhook, der
einen Regelverstoß beim kubectl apply live abweist.
Dieser Mechanismus gilt hier als bekannt und wird
nicht erneut erklärt – wer ihn nachschlagen will,
findet ihn im Vorgängerkurs. Hier geht es um einen anderen
Kontrollpunkt für dieselbe Regel: Ein
Admission-Webhook prüft erst, wenn kubectl apply bereits
läuft und ein Cluster-Zugriff besteht. Ein CI/CD-Policy-Gate prüft
dieselbe Regel vorher – gegen die YAML-Datei im
Checkout, ohne dass überhaupt ein Cluster erreichbar sein muss. Im
ersten Hands-on prüft ihr genau diese Pflicht-Label-Regel mit der
Kyverno-CLI (kyverno apply) gegen zwei
lokale Pod-Manifeste – eines ohne Label, eines mit. Im zweiten
Hands-on prüft ihr dieselbe Regel, dieselben
Manifeste, werkzeugunabhängig mit conftest gegen eine
Rego-Regel (Open Policy Agent) – ohne Kyverno-spezifisches
YAML-Pattern. Zum Abschluss ordnet ihr das Ergebnis exemplarisch in
einen Bitbucket-Pipelines-Step ein – als Illustration, nicht als
vollständige Plattformschulung zu einem produktiven CI-System.
Explizit ohne Cluster: Kein Minikube, kein
Admission-Webhook, kein kubectl apply in diesem Modul –
beide Werkzeuge laufen als reine Kommandozeilen-Programme gegen
YAML-Dateien auf der lokalen Festplatte.
Format
90 Minuten, live (remote oder vor Ort), Input & zwei Hands-on-Blöcke – kein Kubernetes-Cluster, keine verschachtelte Virtualisierung nötig
Teilnehmende
DevOps/Platform-Teams und Pipeline-Autor:innen, die Policy-Prüfungen bereits vor dem Deployment in die Pipeline einbauen wollen, statt erst am Cluster
Voraussetzungen
Kubernetes-YAML-Grundverständnis (ein Pod-Manifest lesen können) und CI-Pipeline-Grundkenntnisse; empfohlen, aber keine Pflicht: abgeschlossenes Modul “Kubernetes Admission Controllers & Policy Engines”
Warum dieses Training für deine Organisation wirkt
Ein Fehlschlag am Cluster kommt zu spät
Wenn eine Policy-Verletzung erst beim kubectl apply
auffällt, hat die Pipeline bereits gebaut, getestet und
womöglich versucht auszurollen. Dieselbe Regel vorher gegen die
Manifest-Datei zu prüfen, spart genau diesen Umweg.
Kein Cluster nötig, um zu prüfen
Sowohl kyverno apply als auch conftest test
laufen als reine Kommandozeilen-Programme gegen YAML-Dateien –
kein Admission-Webhook, kein laufender Cluster, kein
kubectl-Kontext nötig, um eine Regel zu testen.
Dieselbe Regel, zwei Kontrollpunkte
Ein CI/CD-Policy-Gate ersetzt keinen Admission-Webhook – wer die Pipeline umgeht, umgeht auch das Gate. Beide Kontrollpunkte ergänzen sich, das eine schnell und früh, das andere als letzte Instanz direkt am Cluster.
Was Teilnehmende mitnehmen
- Den Unterschied zwischen einem Admission-Webhook (prüft am Cluster) und einem CI/CD-Policy-Gate (prüft vorher, gegen die Datei) an derselben Regel benennen.
- Die Kyverno-CLI installieren und
kyverno applynutzen, um eineClusterPolicygegen lokale Pod-Manifeste zu prüfen – ohne Cluster, ohne Admission-Controller. conftestinstallieren und dieselbe Pflicht-Label-Regel als werkzeugunabhängige Rego-Regel gegen dieselben Manifeste prüfen – Pass- und Fail-Fall live am Exit-Code und an der Konsolenausgabe unterscheiden.- Beide Werkzeuge anhand derselben Regel und derselben Testdateien direkt vergleichen: Kyverno prüft eine Kyverno-eigene
ClusterPolicy, conftest prüft eine allgemeine Rego-Regel, die keine Kyverno- oder Gatekeeper-Objekte kennt. - Ein Policy-Gate exemplarisch als Schritt in eine Bitbucket-Pipeline einordnen – als Beispiel, nicht als vollständige Plattformkonfiguration.
- Bewusst einordnen, was ein CI/CD-Policy-Gate nicht leistet: Es ersetzt keine Admission-Webhook-Durchsetzung am Cluster – wer direkt per
kubectl applyauf den Cluster zugreift, umgeht das Gate vollständig.
Für wen dieses Modul ideal ist
- • DevOps/Platform-Teams, die Policy-Verstöße vor dem Deployment statt erst am Cluster abfangen wollen
- • Pipeline-Autor:innen, die einen Policy-Schritt in eine bestehende CI-Pipeline einbauen sollen
- • Teilnehmende des Moduls “Kubernetes Admission Controllers & Policy Engines”, die die dort behandelte Regel jetzt am zweiten Kontrollpunkt sehen wollen
Rahmendaten
- • Dauer: 90 Minuten live (remote oder vor Ort)
- • Format: Input, zwei Hands-on-Blöcke (Kyverno-CLI, conftest/Rego), ein exemplarischer CI-Pipeline-Schritt
- • Voraussetzungen: Kubernetes-YAML-Grundverständnis, CI-Pipeline-Grundkenntnisse, keine Cluster- oder Cloud-Kostenwirkung – reine CLI-Werkzeuge gegen lokale Dateien
Modulaufbau & Agenda
Shift-Left: dieselbe Regel, ein früherer Kontrollpunkt (10 min): Rückverweis auf den im Vorgängerkurs gelehrten Admission-Webhook-Mechanismus (hier nicht wiederholt), Abgrenzung zum CI/CD-Policy-Gate als zweitem, früherem Kontrollpunkt für dieselbe Regel.
Hands-on 1: Kyverno-CLI gegen lokale Manifeste (25 min, Hands-on): Kyverno-CLI installieren, dieselbe
ClusterPolicymit Pflicht-Labelteamperkyverno applygegen ein Pod-Manifest ohne Label (Fail) und mit Label (Pass) prüfen – ohne Cluster.Hands-on 2: conftest gegen eine Rego-Regel (25 min, Hands-on): conftest installieren, dieselbe Pflicht-Label-Regel als werkzeugunabhängige Rego-Regel schreiben, dieselben zwei Pod-Manifeste per
conftest testprüfen und Ausgabe/Exit-Code mit Hands-on 1 vergleichen.CI-Einbindung & Abgrenzung (15 min): ein exemplarischer Bitbucket-Pipelines-Step, der
conftest testvor dem Merge laufen lässt, als Illustration statt vollständiger Plattformschulung; klare Abgrenzung zum Admission-Webhook des Vorgängerkurses, keine Tool-Marktanteil-Diskussion.Puffer/Q&A (15 min): offene Fragen, individuelle Vertiefung je nach vorhandener CI-Plattform der Teilnehmenden.
Dieses Modul baut inhaltlich auf Kubernetes Admission Controllers & Policy Engines — Kyverno vs. OPA Gatekeeper auf – empfohlen, aber keine Pflicht. Die dort geschriebene und live am Cluster durchgesetzte Pflicht-Label-Regel ist hier dieselbe Regel, nur an einem anderen Kontrollpunkt geprüft. Der Admission-Webhook-Mechanismus und die Cluster-Durchsetzung selbst gelten als bekannt und werden hier nicht erneut erklärt.
Was dieses Modul bewusst nicht behandelt: Admission-Webhooks und Cluster-Durchsetzung einer Regel – das lehrt bereits Kubernetes Admission Controllers & Policy Engines, hier nur referenziert und abgegrenzt, nicht wiederholt. Ebenfalls nicht Thema: eine Marktanteil- oder Empfehlungsdiskussion zwischen Kyverno und conftest/OPA, sowie die vollständige Integration in ein konkretes produktives CI-System – der gezeigte Bitbucket-Pipelines-Step ist ein Beispiel zur Einordnung, keine eigenständige Plattformschulung zu Bitbucket Pipelines (siehe dazu Bitbucket Pipeline Grundwissen).
Hands-on Inhalte (Auszug)
Kyverno-CLI: dieselbe Regel ohne Cluster
- Kyverno-CLI als einzelne Binärdatei herunterladen – kein Helm, kein Admission-Controller, kein Namespace
kyverno apply cpol-require-team-label.yaml –resource pod-ohne-label.yamlgegen ein Pod-Manifest ohneteam-Label ausführen und den Fail-Fall inklusive Exit-Code 1 lesen
Kyverno-CLI: Pass-Fall am selben Manifest-Paar
- Denselben Befehl gegen ein zweites Pod-Manifest mit gesetztem
team-Label ausführen und den Pass-Fall inklusive Exit-Code 0 bestätigen - Beide Läufe nebeneinander lesen – gleiche Policy-Datei, ein Unterschied im Manifest entscheidet über Pass/Fail
conftest: dieselbe Regel als Rego
- conftest installieren, eine eigenständige Rego-Regel mit
deny contains msg ifschreiben, die keinerlei Kyverno- oder Gatekeeper-Objekte kennt conftest test pod-ohne-label.yaml -p policygegen dasselbe Manifest wie in Hands-on 1 ausführen und den Fail-Fall lesen
conftest: Pass-Fall und Werkzeug-Vergleich
- Denselben Befehl gegen das Manifest mit gesetztem Label ausführen und den Pass-Fall bestätigen – exakt dieselben zwei Manifest-Dateien wie bei der Kyverno-CLI, zwei unterschiedliche Werkzeuge
- Ausgabeformat, Exit-Code und Regel-Syntax von Kyverno-CLI und conftest nebeneinander im Plenum vergleichen
Dieses Modul ist Teil unserer Pilotphase. Gemeinsam mit euch definieren wir passende Metriken (z. B. Zeit vom ersten kyverno apply/conftest test bis zum korrekt interpretierten Fail-Fall) und werten sie im Anschluss transparent aus. Ergebnisse veröffentlichen wir, sobald sie belastbar sind.
Bereit, das Modul zu buchen?
Wir passen die Hands-on-Übung auf euer bestehendes CI-System an.
Academy Briefing anfragen