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.

Crea y ejecuta una directiva de Gatekeeper

Puedes crear y ejecutar la directiva exactamente de la misma manera que una directiva de Rego dirigida al Open Policy Agent. La estructura de tu proyecto es:

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

1 directory, 3 files

Construir

Construye la directiva ejecutando el comando opa:

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

Esto construye la directiva de Rego, con:

  • target: wasm. Queremos construir la directiva para el objetivo wasm.

  • entrypoint: policy/violation. El punto de entrada es la regla violation dentro del paquete policy.

  • policy.rego: construir e incluir el archivo policy.rego.

El comando anterior genera un archivo bundle.tar.gz. Puedes extraer el módulo Wasm de él:

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

El árbol del proyecto se ve como el siguiente:

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

1 directory, 5 files

Ahora puedes ejecutar tu directiva.

Ejecute:

Utiliza kwctl para ejecutar tu directiva de la siguiente manera:

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

Este es tu recurso creado en el espacio de nombres llamado other, se acepta, como se esperaba.

Ahora puedes ejecutar una solicitud que es rechazada por la directiva:

$ 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"
  }
}

Puedes ver que tu directiva de Gatekeeper rechazó este recurso.