Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-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.