この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です Admission Controller 1.34-dev.

ログ記録

Go SDKは、https://github.com/francoispqt/onelog[onelog]プロジェクトとほぼそのままで統合されます。

プロジェクトはこのライブラリを次のように選択しました:

  • WebAssemblyバイナリで動作します。 他の人気のあるログ記録ソリューションはWebAssemblyをターゲットにコンパイルできません。

  • 優れたパフォーマンスを提供します。

  • 構造化ログ記録をサポートしています。

ロガーを初期化する

ロガー構造体を初期化する必要があります。 この初期化をグローバル変数で行うことにより、ポリシーの2つの主要なエントリポイントからログを記録できます:validate`と`validate_settings

メインパッケージでは、`main.go`でロガーの初期化が行われます:

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

ロガーの使用

これで、ポリシー内の必要な場所からログを記録するために`logger`オブジェクトを使用できます:

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

構造化ログ記録を追加できます:

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

詳細については、https://pkg.go.dev/github.com/francoispqt/onelog?utm_source=godoc[`onelog`ドキュメント]を参照できます。

ポリシーログはポリシー評価者に送信されます(例えば、kwctl`または`policy-server)、彼らはポリシーを代表してログを記録します。 彼らは、https://www.jaegertracing.io/[Jaeger]のような分散トレーシングを可能にする他のコンポーネントと相互運用可能なメカニズムを使用します。