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

Erstellen und Ausführen einer Gatekeeper-Richtlinie

Sie können die Richtlinie genau wie eine Rego-Richtlinie, die auf den Open Policy Agent abzielt, erstellen und ausführen. Die Struktur Ihres Projekts ist:

.
├── data
│   ├── default-ns.json
│   └── other-ns.json
└── policy.rego

1 directory, 3 files

Erstellen

Erstellen Sie die Richtlinie, indem Sie den opa Befehl ausführen:

$ opa build -t wasm -e policy/violation policy.rego

Dies erstellt die Rego-Richtlinie mit:

  • target: wasm. Wir möchten die Richtlinie für das wasm Ziel erstellen.

  • entrypoint: policy/violation. Der Einstiegspunkt ist die violation Regel innerhalb des policy Pakets.

  • policy.rego: erstellen und die policy.rego Datei einfügen.

Der vorherige Befehl generiert eine bundle.tar.gz Datei. Sie können das Wasm-Modul daraus extrahieren:

$ tar -xf bundle.tar.gz /policy.wasm

Der Projektbaum sieht wie folgt aus:

.
├── bundle.tar.gz
├── data
│   ├── default-ns.json
│   └── other-ns.json
├── policy.rego
└── policy.wasm

1 directory, 5 files

Sie können jetzt Ihre Richtlinie ausführen.

Führen Sie folgendes Kommando aus:

Verwenden Sie kwctl, um Ihre Richtlinie wie folgt auszuführen:

$ kwctl run -e gatekeeper --request-path data/other-ns.json policy.wasm | jq
{
  "uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
  "allowed": true
}

Dies ist Ihre Ressource, die im Namespace other erstellt wurde, sie wird akzeptiert, wie erwartet.

Jetzt können Sie eine Anfrage stellen, die von der Richtlinie abgelehnt wird:

$ kwctl run -e gatekeeper --request-path data/default-ns.json policy.wasm | jq
{
  "uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
  "allowed": false,
  "status": {
    "message": "it is forbidden to use the default namespace"
  }
}

Sie können sehen, dass Ihre Gatekeeper-Richtlinie diese Ressource abgelehnt hat.