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.

Erstellen einer Richtlinie

Als Beispiel erstellen Sie eine einfache Validierungsrichtlinie, die Pod-Erstellungsanfragen verarbeitet.

Die Richtlinie betrachtet das metadata.name Attribut des Pods und lehnt Pods mit einem ungültigen Namen ab. Die Liste der ungültigen Namen sollte von den Endbenutzern der Richtlinie konfigurierbar sein.

Die Richtlinieneinstellungen sehen ungefähr so aus:

invalid_names:
- bad_name1
- bad_name2

Die Richtlinie sollte die Erstellung eines Pods wie dem folgenden akzeptieren:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - name: nginx
      image: nginx:latest

Die Richtlinie sollte die Erstellung eines Pods wie dem folgenden ablehnen:

apiVersion: v1
kind: Pod
metadata:
  name: bad_name1
spec:
  containers:
    - name: nginx
      image: nginx:latest

Gerüst für das neue Richtlinienprojekt erstellen

Sie können ein neues Richtlinienprojekt erstellen, indem Sie cargo generate mit dem Vorlagenprojekt verwenden.

Zuerst installieren Sie cargo-generate. Dies erfordert openssl-devel.

cargo install cargo-generate

Jetzt erstellen Sie das Gerüst für das Projekt wie folgt:

cargo generate --git https://github.com/kubewarden/rust-policy-template \
               --branch main \
               --name demo

Der Befehl erzeugt eine Ausgabe wie:

🔧   Creating project called `+demo+`...
✨   Done! New project created /<some-path-name>/demo

Dies erstellt das neue Richtlinienprojekt im demo Unterverzeichnis.

Wenn Sie die Funktionalität des GitHub-Container-Registrierungsdienstes in der Demo nutzen möchten, müssen Sie verbesserte Containerunterstützung aktivieren.

Tester

Sie können Folgendes ausprobieren:

cargo test

Dies testet das generierte Gerüst. Wenn alles korrekt an seinem Platz ist, sehen Sie eine Reihe von Kompilierungsnachrichten, die mit einer Ausgabe enden wie:

running 4 tests
test settings::tests::validate_settings ... ok
test tests::accept_request_with_non_pod_resource ... ok
test tests::accept_pod_with_valid_name ... ok
test tests::reject_pod_with_invalid_name ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s