Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.37-dev.

Protokollierung

Das Go SDK integriert sich fast ohne Anpassungen in das onelog Projekt.

Das Projekt hat sich für diese Bibliothek entschieden:

  • Es funktioniert mit WebAssembly-Binärdateien. Andere beliebte Logging-Lösungen können nicht für WebAssembly kompiliert werden.

  • Es bietet gute Leistung.

  • Es unterstützt strukturiertes Logging.

Logger initialisieren

Sie müssen eine Logger-Struktur initialisieren. Durch die Durchführung dieser Initialisierung in einer globalen Variablen können Sie von den beiden Hauptzugangspunkten der Richtlinie protokollieren: validate und validate_settings.

Im Hauptpaket main.go gibt es eine Initialisierung für den Logger:

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

Logger verwenden

Jetzt können Sie das logger-Objekt verwenden, um in Ihrer Richtlinie von überall zu protokollieren:

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

Sie können strukturiertes Logging hinzufügen:

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

Weitere Informationen finden Sie in der onelog Dokumentation .

Das Protokollieren der Richtlinie erfolgt an die Richtlinienauswerter (zum Beispiel kwctl oder policy-server) und diese protokollieren im Namen der Richtlinie. Sie verwenden Mechanismen, die mit anderen Komponenten interoperabel sind, die verteiltes Tracing ermöglichen, wie zum Beispiel Jaeger.