|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
|
Esta es documentación inédita para Admission Controller 1.34-dev. |
Construir y ejecutar una política OPA para Admission Controller
En la sección anterior escribiste tu política Rego. La estructura se ve como:
.
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
└── request.rego
1 directory, 4 files
Construir
Para construir:
$ opa build -t wasm -e policy/main policy.rego request.rego
Esto construye la directiva de Rego, con:
-
target:wasm. Quieres construir la política para el objetivowasm. -
entrypoint:policy/main. El punto de entrada es la reglamaindentro del paquetepolicy. -
policy.rego: Construir e incluir el archivopolicy.rego. -
request.rego: Construir e incluir el archivorequest.rego.
Después de que la construcción se complete, opa build ha generado un archivo bundle.tar.gz.
Puedes extraerlo:
$ tar -xf bundle.tar.gz /policy.wasm
Ahora el árbol se ve como el siguiente:
.
├── bundle.tar.gz
├── data
│ ├── default-ns.json
│ └── other-ns.json
├── policy.rego
├── policy.wasm
└── request.rego
1 directory, 6 file
Tienes tu archivo policy.wasm:
$ file policy.wasm
policy.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)
Ahora lo ejecutas.
Ejecute:
Usa kwctl para ejecutar la política:
$ kwctl run -e opa --request-path data/other-ns.json policy.wasm | jq
{
"uid": "1299d386-525b-4032-98ae-1949f69f9cfc",
"allowed": true
}
Esta solicitud es aceptada por la política, ya que esta es la solicitud que apunta al espacio de nombres other.
-
execution-mode:opa. Las políticas Rego pueden estar dirigidas a Open Policy Agent o Gatekeeper. Debes decirle akwctlqué tipo de política estás ejecutando. -
request-path: La ubicación de la solicitud registrada a la quekwctlenvía la política para su evaluación.
Ahora intenta evaluar la solicitud que crea el pod dentro del espacio de nombres 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 política está rechazando la solicitud, dando una razón de vuelta al servidor API que se devuelve al usuario o consumidor de la API.