|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
|
Il s'agit d'une documentation non publiée pour Admission Controller 1.34-dev. |
Construisez et exécutez une stratégie OPA pour Admission Controller
Dans la section précédente, vous avez écrit votre stratégie Rego. La structure ressemble à :
.
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
└── request.rego
1 directory, 4 files
Construire
Pour construire :
$ opa build -t wasm -e policy/main policy.rego request.rego
Cela construit la stratégie Rego, avec :
-
target:wasm. Vous souhaitez construire la stratégie pour la ciblewasm. -
entrypoint:policy/main. Le point d’entrée est la règlemainà l’intérieur du paquetpolicy. -
policy.rego: Construisez et incluez le fichierpolicy.rego. -
request.rego: Construisez et incluez le fichierrequest.rego.
Une fois la construction terminée, opa build a généré un fichier bundle.tar.gz.
Vous pouvez l’extraire :
$ tar -xf bundle.tar.gz /policy.wasm
Maintenant, l’arborescence ressemble à ce qui suit :
.
├── bundle.tar.gz
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
├── policy.wasm
└── request.rego
1 directory, 6 file
Vous avez votre fichier policy.wasm :
$ file policy.wasm
policy.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)
Maintenant, vous l’exécutez.
Exécutez :
Utilisez kwctl pour exécuter la stratégie :
$ kwctl run -e opa --request-path data/other-ns.json policy.wasm | jq
{
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"allowed": true
}
Cette demande est acceptée par la stratégie, car il s’agit de la demande pointant vers l’espace de noms other.
-
execution-mode:opa. Les stratégies Rego peuvent cibler Open Policy Agent ou Gatekeeper. Vous devez dire àkwctlquel type de stratégie vous exécutez. -
request-path: L’emplacement de la requête enregistrée à laquellekwctlenvoie la stratégie pour l’évaluation.
Essayez maintenant d’évaluer la requête qui crée le pod à l’intérieur de l’espace de noms default :
$ 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"
}
}
La stratégie rejette la requête, en donnant une raison au serveur API qui est renvoyée à l’utilisateur ou au consommateur de l’API.