Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev.

Einführung in CEL

Die Common Expression Language (CEL) ist eine allgemeine Ausdruckssprache, die darauf ausgelegt ist, schnell, tragbar und sicher in der Ausführung zu sein. CEL als Sprache ist speichersicher, nebenwirkungsfrei, terminiert (Programme können nicht unendlich schleifen) und stark sowie dynamisch typisiert. Sie können mehr über CEL erfahren unter cel.dev und es im CEL-Spielplatz üben.

CEL in Kubernetes

CEL wurde als Sprache für Kubernetes-Validierungsregeln ausgewählt, da CEL-Ausdrücke leicht in CRD-Schemas eingebettet und "vorauskompiliert" (bei der Erstellung und Aktualisierung von CRDs) typgeprüft werden können. Aus diesen Gründen und aufgrund seiner allgemeinen Eigenschaften ist es ein perfekter Kandidat zur Erweiterung der Kubernetes-API.

Als stabil mit Kubernetes 1.30 gekennzeichnet, kann man CEL bei ValidatingAdmissionPolicies und anderen Validierungsregeln verwenden. Für weitere Informationen siehe die Kubernetes-Dokumentation hier.

Kubernetes-Funktionsbibliotheken

Kubernetes CEL-Validierungsregeln haben Zugriff auf mehrere Funktionsbibliotheken:

CEL in SUSE Security Admission Controller: cel-policy

Admission Controller bietet cel-policy. Dies ist eine Richtlinie, die den Upstream cel-go Interpreter erstellt und bündelt sowie die oben aufgeführten verschiedenen Bibliotheken, die für CEL in Kubernetes von apiextensions-apiserver verfügbar sind.

Darüber hinaus bündelt cel-policy eine Admission Controller CEL-Erweiterungsbibliothek, die Admission Controllers Hostfähigkeiten als native CEL exponiert:

  • Sigstore-Überprüfung

  • OCI-Interaktion

  • Kryptografische Funktionen

  • Netzwerkbetrieb

  • Zugriff auf Kubernetes-Ressourcen

Das bedeutet, dass cel-policy eine Obermenge von Kubernetes CEL ist und rückwärtskompatibel. Man kann CEL, das für Vanilla Kubernetes geschrieben wurde, wiederverwenden und/oder die von Admission Controller hinzugefügten Funktionen nutzen.

Der cel-policy wird kompiliert ausgeliefert und verhält sich wie ein CEL-Interpreter. Die Benutzer der Richtlinie übergeben die gewünschten CEL-Ausdrücke im spec.settings der (Cluster)AdmissionPolicy, und dank der CEL-Funktionen wird der Ausdruck kompiliert und auf Korrektheit typgeprüft, wenn die (Cluster)AdmissionPolicy erstellt oder aktualisiert wird. Das bedeutet, dass keine benutzerdefinierten Builds des cel-policy erforderlich sind.

Vorteile von Admission Controller’s cel-policy im Vergleich zu ValidatingAdmissionPolicies

Der Admission Controller cel-policy:

  • Sein CEL-Code ist rückwärtskompatibel mit ValidatingAdmissionPolicies.

  • Im Gegensatz zu ValidatingAdmissionPolicies benötigt es keine Bindung wie ValidatingAdmissionPolicyBinding, da dies in Admission Controller’s Definitionen der (Cluster)Admissionpolicies enthalten ist.

  • Kann in Clustern bereitgestellt werden, die keine Unterstützung für ValidatingAdmissionPolicies bieten.

  • Ist kontextbewusst und nutzt Admission Controller’s feingranulare Berechtigungen für Kontextbewusstsein.

  • Wird als (Cluster)AdmissionPolicy bereitgestellt.

  • Profitiert von Admission Controller’s Nachverfolgung und Telemetrie zu Richtlinien.

  • Es wird vom Audit Scanner berücksichtigt.

  • Kann dank kwctl außerhalb des Clusters entwickelt und getestet werden.