|
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. |
Pruebas para autores de directivas
Las directivas de SUSE Security Admission Controller son programas regulares compilados como WebAssembly (Wasm). Al igual que con cualquier tipo de programa, una buena cobertura de pruebas es importante.
Los autores de directivas pueden utilizar sus entornos de desarrollo favoritos. Puedes utilizar herramientas familiares y marcos de pruebas para verificar el desarrollo.
Tienen suites de pruebas utilizando pruebas estándar para sus entornos de desarrollo.
Las directivas utilizan GitHub Actions para sus pipelines de CI.
Pruebas de extremo a extremo
También puedes escribir pruebas que se ejecuten contra el binario de Wasm que contiene tu directiva. Para hacer esto sin tener que desplegar un clúster de Kubernetes, puedes utilizar estas herramientas:
Para usar kwctl run necesitas lo siguiente:
-
La referencia del archivo binario Wasm de la directiva a ejecutar. La directiva Admission Controller se puede cargar desde:
-
el sistema de archivos local (
file://) -
un servidor HTTP(s) (
https://) -
un registro OCI (
registry://).
-
-
El objeto de solicitud de admisión a probar. Se lo das a través del argumento
--request-path, o enstdinconfigurando--request-patha-. -
La configuración de la directiva para el tiempo de ejecución como un JSON en línea a través de la bandera
--settings-json. O un JSON, o un archivo YAML, cargado desde el sistema de archivos a través de--settings-path.
Después de la prueba kwctl, imprime el objeto ValidationResponse en la salida estándar.
Así es como usas kwctl para probar el binario Wasm de la ingress-policy mencionada anteriormente:
$ curl https://raw.githubusercontent.com/kubewarden/ingress-policy/v0.1.8/test_data/ingress-wildcard.json 2> /dev/null | \
kwctl run \
--settings-json '{"allowPorts": [80], "denyPorts": [3000]}' \
--request-path - \
registry://ghcr.io/kubewarden/policies/ingress:v0.1.8 | jq
Puedes descargar binarios precompilados de kwctl
aquí.
Usando bats puedes escribir una prueba que ejecute este comando y busque las salidas esperadas:
Una prueba de bats
@test "all is good" {
run kwctl run \
--request-path test_data/ingress-wildcard.json \
--settings-json '{"allowPorts": [80], "denyPorts": [3000]}' \
ingress-policy.wasm
# this prints the output when one the checks below fails
echo "output = ${output}"
# settings validation passed
[[ "$output" == *"valid: true"* ]]
# request accepted
[[ "$output" == *"allowed: true"* ]]
}
Puedes poner el código en un archivo, e2e.bats, por ejemplo, y luego invocar bats así:
$ bats e2e.bats
✓ all is good
1 tests, 0 failures
Esta sección de la documentación tiene más sobre cómo escribir pruebas de extremo a extremo de tus directivas.