|
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. |
Distribuyendo una política de OPA con SUSE Security Admission Controller
Has escrito, construido y ejecutado tu política de Rego. Ahora es el momento de distribuir la política.
Las políticas deben ser anotadas, para que puedan ejecutarse en el policy-server.
El policy-server es la parte que ejecuta las políticas, cuando se ejecuta en un clúster de Kubernetes.
Anotando la directiva
Anotar una política es un proceso que enriquece los metadatos de la política con información relevante. Información como autoría, licencia, ubicación del código fuente, reglas, que describen qué tipo de recursos entiende y evalúa esta política.
Para anotar tu política necesitas escribir un archivo metadata.yaml:
rules:
- apiGroups: [""]
apiVersions: ["*"]
resources: ["*"]
operations: ["CREATE"]
mutating: false
contextAware: false
executionMode: opa
annotations:
io.kubewarden.policy.title: no-default-namespace
io.kubewarden.policy.version: 0.1.0 # should match the OCI tag
io.kubewarden.policy.description: This policy will reject any resource created inside the default namespace
io.kubewarden.policy.author: The SUSE Security Admission Controller Authors
io.kubewarden.policy.url: https://github.com/kubewarden/some-policy
io.kubewarden.policy.source: https://github.com/kubewarden/some-policy
io.kubewarden.policy.license: Apache-2.0
io.kubewarden.policy.usage: |
This policy is just an example.
You can write interesting descriptions about the policy here.
Puedes ver varios detalles:
-
Reglas: Qué recursos tiene como objetivo esta política.
-
Mutando: Si esta política está mutando. En este caso, solo está validando.
-
Consciente del contexto: Si esta política requiere contexto del clúster para evaluar la solicitud.
-
Modo de ejecución: Dado que esta es una política de Rego, es obligatorio especificar qué modo de ejecución espera,
opaogatekeeper. Esta política está escrita en el estiloopa, devolviendo un objetoAdmissionReviewcompleto. -
Anotaciones: Metadatos almacenados en la propia política.
Adelante, anota tu política:
$ kwctl annotate policy.wasm --metadata-path metadata.yaml --output-path annotated-policy.wasm
Ahora puedes inspeccionar la política ejecutando kwctl inspect annotated-policy.wasm.
Enviando la directiva
Ahora que la política está anotada, puedes subirla a un registro OCI.
$ kwctl push annotated-policy.wasm registry.my-company.com/kubewarden/no-default-namespace:v0.0.1
Policy successfully pushed
Tu política de Rego, dirigida al marco OPA, tiene todo lo que necesita para ser ampliada en producción, creando un ClusterAdmissionPolicy.
También puedes preparar eso.
Primero necesitas descargar la política en el almacén local kwctl:
$ kwctl pull registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1
pulling policy...
Crea un ClusterAdmissionPolicy a partir de ella.
Esta operación tiene en cuenta los metadatos que tiene sobre la política:
$ kwctl manifest registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1 --type ClusterAdmissionPolicy
---
apiVersion: policies.kubewarden.io/v1alpha2
kind: ClusterAdmissionPolicy
metadata:
name: generated-policy
spec:
module: "registry://registry.my-company.com/kubewarden/no-default-namespace:v0.0.1"
settings: {}
rules:
- apiGroups:
- ""
apiVersions:
- "*"
resources:
- "*"
operations:
- CREATE
mutating: false
Ahora puedes usar este ClusterAdmissionPolicy como base para dirigirte a los recursos que deseas, o desplegar en Kubernetes tal como está.