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

El SDK de Go se integra con el onelog proyecto, casi listo para usar.

El proyecto ha elegido esta biblioteca como:

  • Funciona con binarios de WebAssembly. Otras soluciones de registro populares no pueden compilar para WebAssembly.

  • Proporciona buen rendimiento.

  • Admite el registro estructurado.

Inicializa el registrador

Necesitas inicializar una estructura de registrador. Al realizar esta inicialización en una variable global, puedes registrar desde los dos principales puntos de entrada de la política: validate y validate_settings.

En el paquete principal, main.go hay inicialización para el registrador:

var (
    logWriter = kubewarden.KubewardenLogWriter{}
    logger    = onelog.New(
        &logWriter,
        onelog.ALL, // shortcut for onelog.DEBUG|onelog.INFO|onelog.WARN|onelog.ERROR|onelog.FATAL
    )
)

Consumiendo el registrador

Ahora, puedes usar el objeto logger para registrar desde donde sea necesario en tu política:

func validate(payload []byte) ([]byte, error) {
    // ...
    logger.Info("validating request")
    // ...
}

Puedes añadir registro estructurado:

func validate(payload []byte) ([]byte, error) {
    // ...
    logger.WarnWithFields("logging something important", func(e onelog.Entry) {
        e.String("one_field", "a value")
        e.String("another_field", "another value")
    })
    // ...
}

Puedes consultar la onelog documentación para más información.

El registro de políticas va al evaluador de políticas (por ejemplo, kwctl o policy-server), y ellos registran en nombre de la política. Utilizan mecanismos que son interoperables con otros componentes que permiten el trazado distribuido, como Jaeger.