|
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.36-dev. |
Creando una nueva directiva de validación
Este tutorial cubre la creación de una directiva que valida los nombres de host de los objetos Pod.
La directiva es rechazar todos los Pods que utilicen uno o más nombres de host en la lista de denegación. Proporcionas la configuración de la directiva utilizando ajustes en tiempo de ejecución.
Para resumir, los ajustes de la directiva deberían verse así:
denied_hostnames:
- bad-host
- forbidden-host
La directiva rechaza la creación de este Pod:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
hostname: bad-host
containers:
- name: nginx
image: nginx:latest
Sin embargo, acepta la creación de este Pod:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
hostname: allowed-host
containers:
- name: nginx
image: nginx:latest
Estructurando un nuevo proyecto de directiva
Puedes crear un nuevo proyecto de directiva utilizando el repositorio de plantilla. Selecciona el botón verde "Usar esta plantilla" cerca de la parte superior de la página y sigue el asistente de GitHub.
Clona el repositorio localmente y actualiza el archivo package.json para reflejar los detalles de tu directiva:
{
"name": "your-policy-name",
"version": "1.0.0",
"description": "Your policy description",
"repository": {
"type": "git",
"url": "https://github.com/your-username/your-policy-name"
}
}
Asegúrate de utilizar una vía de repositorio que coincida con tu repositorio real de GitHub.
Evaluación
Siempre que las herramientas necesarias estén en su lugar, el comando make all construye el objetivo annotated-policy.wasm. El comando make e2e ejecuta pruebas utilizando bats con kwctl.
makemake all
npx webpack --config webpack.config.cjs
asset bundled.js 5.52 KiB [compared for emit] [minimized] (name: main)
asset types.d.ts 430 bytes [compared for emit]
asset index.d.ts 11 bytes [compared for emit]
./src/index.ts 3.84 KiB [built] [code generated]
./node_modules/kubewarden-policy-sdk/dist/bundle.js 3.85 KiB [built] [code generated]
webpack 5.101.3 compiled successfully in 2280 ms
npm install
up to date, audited 400 packages in 2s
58 packages are looking for funding
run `+npm fund+` for details
found 0 vulnerabilities
make e2e
npx webpack --config webpack.config.cjs
asset bundled.js 5.52 KiB [compared for emit] [minimized] (name: main)
asset types.d.ts 430 bytes [compared for emit]
asset index.d.ts 11 bytes [compared for emit]
./src/index.ts 3.84 KiB [built] [code generated]
./node_modules/kubewarden-policy-sdk/dist/bundle.js 3.85 KiB [built] [code generated]
webpack 5.101.3 compiled successfully in 1909 ms
bats e2e.bats
e2e.bats
✓ reject because hostname is on the deny list
✓ accept because hostname is not on the deny list
✓ accept because the deny list is empty
✓ accept because pod has no hostname set
✓ accept non-pod resources
5 tests, 0 failures