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.

Registro

Puedes hacer que tu directiva realice registros. El policy-server o kwctl reenvía esas entradas de registro con la información apropiada.

La biblioteca de registro elegida para el SDK de Rust es slog. Es un crate popular y bien conocido que se integra de manera limpia con SUSE Security Admission Controller.

Inicializa el registrador

El proyecto recomienda que crees un sumidero global al que puedas registrar, desde donde sea necesario en tu directiva. Para esto, utiliza el crate lazy_static:

use slog::{o, Logger};

lazy_static! {
    static ref LOG_DRAIN: Logger = Logger::root(
        logging::KubewardenDrain::new(),
        o!("policy" => "sample-policy")
    );
}

Consumiendo el registrador

Ahora, desde dentro de las funciones validate o validate_settings, puedes registrar utilizando las macros exportadas por slog que coinciden con cada nivel de registro soportado:

use slog::{info, o, warn, Logger};

fn validate(payload: &[u8]) -> CallResult {
    // ...
    info!(LOG_DRAIN, "starting validation");
    // ...
    warn!(
        LOG_DRAIN, "structured log";
        "some_resource_name" => &some_resource_name
    );
    // ...
}

La biblioteca slog envía todos los registros al sumidero inicializado en la variable global. Esto se sincroniza con el evaluador de directivas que ejecuta la directiva. Esto es kwctl o el policy-server. Luego, el evaluador de directivas registra esta información, agregando más información contextual conocida, como la solicitud de Kubernetes uid.

Más información sobre los macros de registro ofrecidos por slog se encuentra en su documentación.