Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Il s'agit d'une documentation non publiée pour Admission Controller 1.34-dev.

Consignation

Le SDK Go s’intègre au projet onelog presque prêt à l’emploi.

Le projet a choisi cette bibliothèque comme :

  • Il fonctionne avec des binaires WebAssembly. D’autres solutions de journalisation populaires ne peuvent pas être compilées pour cibler WebAssembly.

  • Il offre de bonnes performances.

  • Il prend en charge la journalisation structurée.

Initialiser le logger

Vous devez initialiser une structure de logger. En effectuant cette initialisation dans une variable globale, vous pouvez journaliser depuis les deux principaux points d’entrée de la stratégie : validate et validate_settings.

Dans le paquet principal, main.go il y a une initialisation pour le logger :

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

Utiliser le logger

Maintenant, vous pouvez utiliser l’objet logger pour journaliser depuis n’importe où dans votre stratégie :

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

Vous pouvez ajouter une journalisation structurée :

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

Vous pouvez vous référer à la onelog documentation pour plus d’informations.

La journalisation de la stratégie va vers l’évaluateur de stratégie (par exemple, kwctl ou policy-server), et celui-ci journalise au nom de la stratégie. Ils utilisent des mécanismes qui sont interopérables avec d’autres composants qui permettent le traçage distribué, tels que Jaeger.