|
Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.37-dev. |
Erstellen und führen Sie eine OPA-Richtlinie für Admission Controller aus.
Im vorherigen Abschnitt haben Sie Ihre Rego-Richtlinie geschrieben. Die Struktur sieht wie folgt aus:
.
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
└── request.rego
1 directory, 4 files
Erstellen
Zum Erstellen:
$ opa build -t wasm -e policy/main policy.rego request.rego
Dies erstellt die Rego-Richtlinie mit:
-
target:wasm. Sie möchten die Richtlinie für daswasmZiel erstellen. -
entrypoint:policy/main. Der Einstiegspunkt ist diemainRegel innerhalb despolicyPakets. -
policy.rego: Erstellen und fügen Sie diepolicy.regoDatei ein. -
request.rego: Erstellen und fügen Sie dierequest.regoDatei ein.
Nachdem der Build abgeschlossen ist, hat opa build eine bundle.tar.gz Datei generiert.
Sie können sie extrahieren:
$ tar -xf bundle.tar.gz /policy.wasm
Jetzt sieht der Baum wie folgt aus:
.
├── bundle.tar.gz
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
├── policy.wasm
└── request.rego
1 directory, 6 file
Sie haben Ihre policy.wasm Datei:
$ file policy.wasm
policy.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)
Jetzt führen Sie sie aus.
Führen Sie folgendes Kommando aus:
Verwenden Sie kwctl, um die Richtlinie auszuführen:
$ kwctl run -e opa --request-path data/other-ns.json policy.wasm | jq
{
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"allowed": true
}
Diese Anfrage wird von der Richtlinie akzeptiert, da dies die Anfrage ist, die auf den other Namespace verweist.
-
execution-mode:opa. Rego-Richtlinien können auf Open Policy Agent oder Gatekeeper abzielen. Sie müssenkwctlmitteilen, welche Art von Richtlinie Sie ausführen. -
request-path: Der Standort der aufgezeichneten Anfrage, an diekwctldie Richtlinie zur Bewertung sendet.
Versuchen Sie nun, die Anfrage zu bewerten, die den Pod im default Namespace erstellt:
$ kwctl run -e opa --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"
}
}
Die Richtlinie lehnt die Anfrage ab und gibt einen Grund an den API-Server zurück, der an den Benutzer oder API-Konsumenten weitergeleitet wird.