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 apply nutzen, um eine ClusterPolicy gegen lokale Pod-Manifeste zu prüfen – ohne Cluster, ohne Admission-Controller.
  • conftest installieren 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 apply auf 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

  1. 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.

  2. Hands-on 1: Kyverno-CLI gegen lokale Manifeste (25 min, Hands-on): Kyverno-CLI installieren, dieselbe ClusterPolicy mit Pflicht-Label team per kyverno apply gegen ein Pod-Manifest ohne Label (Fail) und mit Label (Pass) prüfen – ohne Cluster.

  3. 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 test prüfen und Ausgabe/Exit-Code mit Hands-on 1 vergleichen.

  4. CI-Einbindung & Abgrenzung (15 min): ein exemplarischer Bitbucket-Pipelines-Step, der conftest test vor dem Merge laufen lässt, als Illustration statt vollständiger Plattformschulung; klare Abgrenzung zum Admission-Webhook des Vorgängerkurses, keine Tool-Marktanteil-Diskussion.

  5. 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.yaml gegen ein Pod-Manifest ohne team-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 if schreiben, die keinerlei Kyverno- oder Gatekeeper-Objekte kennt
  • conftest test pod-ohne-label.yaml -p policy gegen 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