Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Esta é uma documentação não divulgada para Admission Controller 1.34-dev.

Registro

Você pode fazer sua política registrar logs. O policy-server ou kwctl encaminha esses logs com as informações apropriadas.

A biblioteca de logging escolhida para o SDK Rust é slog. É uma crate popular, bem conhecida e se integra de forma limpa com SUSE Security Admission Controller.

Inicialize o logger

O projeto recomenda que você crie um sink global para o qual você possa registrar logs, de qualquer lugar da sua política. Para isso, use a crate lazy_static:

use slog::{o, Logger};

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

Consumindo o logger

Agora, de dentro das funções validate ou validate_settings, você pode registrar logs usando os macros exportados por slog que correspondem a cada nível de logging suportado:

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
    );
    // ...
}

A biblioteca slog envia todos os logs para o drain inicializado na variável global. Isso sincroniza com o avaliador de política que executa a política. Isso é kwctl ou o policy-server. Então, o avaliador de política registra essas informações, acrescentando informações contextuais adicionais, como a solicitação do Kubernetes uid.

Mais informações sobre os macros de logging oferecidos pelo slog estão em sua documentação.