diff --git a/go.mod b/go.mod index 2e3774b53..44be66f6b 100644 --- a/go.mod +++ b/go.mod @@ -15,10 +15,10 @@ require ( k8s.io/apimachinery v0.35.4 k8s.io/client-go v0.35.4 k8s.io/code-generator v0.35.4 - knative.dev/eventing v0.49.1-0.20260504114613-23fbca18994b + knative.dev/eventing v0.49.1-0.20260511150731-43e651f7940a knative.dev/hack v0.0.0-20260428014158-b2a37f1b6e7b - knative.dev/pkg v0.0.0-20260505204821-021ad709ec68 - knative.dev/serving v0.49.1-0.20260504070613-3d28fb878e74 + knative.dev/pkg v0.0.0-20260507212125-df317a52d112 + knative.dev/serving v0.49.1-0.20260508141527-06f2ba70f0cc ) require ( @@ -113,7 +113,7 @@ require ( k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect - knative.dev/networking v0.0.0-20260422140718-e9578ef11562 // indirect + knative.dev/networking v0.0.0-20260428014950-5876dec269ce // indirect sigs.k8s.io/gateway-api v1.1.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/go.sum b/go.sum index dbd082063..b9aea1b18 100644 --- a/go.sum +++ b/go.sum @@ -364,16 +364,16 @@ k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZ k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck= k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -knative.dev/eventing v0.49.1-0.20260504114613-23fbca18994b h1:th2HE08avQTCgnPYN9KiOvIISqWiTuCJ6Fet6WglHKA= -knative.dev/eventing v0.49.1-0.20260504114613-23fbca18994b/go.mod h1:5lsUu0xHPLQpfVW7kmYXB7uRCUOnGGPsE87rx3hrRsM= +knative.dev/eventing v0.49.1-0.20260511150731-43e651f7940a h1:Iq198f0CCOm+gIArlRzxyw+Ini/izupUjBjqyZy6GoM= +knative.dev/eventing v0.49.1-0.20260511150731-43e651f7940a/go.mod h1:rqixbt+It0fwbQQuPjVDAEiLi12KnLG3Bmul3T5IHAM= knative.dev/hack v0.0.0-20260428014158-b2a37f1b6e7b h1:MvbV2F2BdI8qKrYYUhDwbUZbX0BAYRSIpXM2TOtTvs0= knative.dev/hack v0.0.0-20260428014158-b2a37f1b6e7b/go.mod h1:L5RzHgbvam0u8QFHfzCX6MKxu/a/gIGEdaRBqNiVbl0= -knative.dev/networking v0.0.0-20260422140718-e9578ef11562 h1:3roePSDRNthOFDxwTISYPt2IYEXXVramzpHnH0NMGYs= -knative.dev/networking v0.0.0-20260422140718-e9578ef11562/go.mod h1:aQO2gITPzLwMPCV9S57rHrb1Zt2mUAYSGLbb/7nqzW0= -knative.dev/pkg v0.0.0-20260505204821-021ad709ec68 h1:cZz3AkOusfsFBJCOKiCiadBbHjbEiqlsu/55gzRhPZM= -knative.dev/pkg v0.0.0-20260505204821-021ad709ec68/go.mod h1:JM+8ds+MTBtPK2aCp6pGUHQx9gNIL8wuMhqr0sxtDog= -knative.dev/serving v0.49.1-0.20260504070613-3d28fb878e74 h1:rt3Hguyh3lWD1U9p7k1LWl9V9L2egRAnAZf4d0wJkdU= -knative.dev/serving v0.49.1-0.20260504070613-3d28fb878e74/go.mod h1:KXvVnXohxsbE3rCRbr1TZlxeC20qIzhVckDwbsgLWPI= +knative.dev/networking v0.0.0-20260428014950-5876dec269ce h1:Pt5NYScJzJ8CcIogikaTakvehEO9COjzXZ/2gJmc8YA= +knative.dev/networking v0.0.0-20260428014950-5876dec269ce/go.mod h1:aQO2gITPzLwMPCV9S57rHrb1Zt2mUAYSGLbb/7nqzW0= +knative.dev/pkg v0.0.0-20260507212125-df317a52d112 h1:ftdGpzukmrlcTRTCZytQQ+mAMUAFqcq/cwIUwc/Lk2s= +knative.dev/pkg v0.0.0-20260507212125-df317a52d112/go.mod h1:JM+8ds+MTBtPK2aCp6pGUHQx9gNIL8wuMhqr0sxtDog= +knative.dev/serving v0.49.1-0.20260508141527-06f2ba70f0cc h1:+BqyVv9YGmMD97ISMvQ5xhS2RrYf/ZQqoYzrRTnHdas= +knative.dev/serving v0.49.1-0.20260508141527-06f2ba70f0cc/go.mod h1:3hXF5IUiZow3USDS0rA5UQeZCP30OwuDalcQS96XmFQ= sigs.k8s.io/gateway-api v1.1.0 h1:DsLDXCi6jR+Xz8/xd0Z1PYl2Pn0TyaFMOPPZIj4inDM= sigs.k8s.io/gateway-api v1.1.0/go.mod h1:ZH4lHrL2sDi0FHZ9jjneb8kKnGzFWyrTya35sWUTrRs= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= diff --git a/vendor/knative.dev/eventing/pkg/adapter/v2/config.go b/vendor/knative.dev/eventing/pkg/adapter/v2/config.go index 3f8817654..cdd14a131 100644 --- a/vendor/knative.dev/eventing/pkg/adapter/v2/config.go +++ b/vendor/knative.dev/eventing/pkg/adapter/v2/config.go @@ -26,6 +26,7 @@ import ( "go.uber.org/zap" "knative.dev/eventing/pkg/observability" + pkgutils "knative.dev/eventing/pkg/utils" duckv1 "knative.dev/pkg/apis/duck/v1" kle "knative.dev/pkg/leaderelection" "knative.dev/pkg/logging" @@ -47,6 +48,7 @@ const ( EnvConfigObservabilityConfig = "K_OBSERVABILITY_CONFIG" EnvConfigLeaderElectionConfig = "K_LEADER_ELECTION_CONFIG" EnvSinkTimeout = "K_SINK_TIMEOUT" + EnvConfigKlogVerbosity = "K_KLOG_VERBOSITY" ) // EnvConfig is the minimal set of configuration parameters @@ -86,6 +88,9 @@ type EnvConfig struct { // a config map inside the controllers namespace and copied here. LoggingConfigJson string `envconfig:"K_LOGGING_CONFIG" default:"{}"` + // KlogVerbosity is the klog verbosity level (0-9). Injected from config-logging ConfigMap. + KlogVerbosity string `envconfig:"K_KLOG_VERBOSITY" default:"0"` + // ObservabilityConfigJson is a json string of observability.Config. // This is used to configure the observability config, the config is stored in // a config map inside the controllers namespace and copied here. @@ -157,6 +162,11 @@ func (e *EnvConfig) GetLogger() *zap.SugaredLogger { } logger, _ := logging.NewLoggerFromConfig(loggingConfig, e.Component) + + if _, err := pkgutils.SetKlogVerbosity(e.KlogVerbosity); err != nil { + logger.Warnw("Failed to set klog verbosity", zap.Error(err)) + } + e.logger = logger } return e.logger diff --git a/vendor/knative.dev/eventing/pkg/adapter/v2/configurator_configmap.go b/vendor/knative.dev/eventing/pkg/adapter/v2/configurator_configmap.go index e7cf86180..f67635d49 100644 --- a/vendor/knative.dev/eventing/pkg/adapter/v2/configurator_configmap.go +++ b/vendor/knative.dev/eventing/pkg/adapter/v2/configurator_configmap.go @@ -31,6 +31,7 @@ import ( "knative.dev/eventing/pkg/observability" o11yconfigmap "knative.dev/eventing/pkg/observability/configmap" "knative.dev/eventing/pkg/observability/otel" + "knative.dev/eventing/pkg/utils" ) // loggerConfiguratorFromConfigMap dynamically @@ -96,10 +97,17 @@ func (c *loggerConfiguratorFromConfigMap) CreateLogger(ctx context.Context) *zap logger, atomicLevel := SetupLoggerFromConfig(lc, c.component) + if lcm != nil { + if _, err := utils.SetKlogVerbosityFromConfigMap(lcm.Data); err != nil { + logger.Warnw("Failed to set initial klog verbosity", zap.Error(err)) + } + } + logger.Infof("Adding Watcher on ConfigMap %s for logs", c.configMapName) cmw := ConfigWatcherFromContext(ctx) cmw.Watch(c.configMapName, logging.UpdateLevelFromConfigMap(logger, atomicLevel, c.component)) + cmw.Watch(c.configMapName, utils.UpdateKlogVerbosityFromConfigMap(logger)) return logger } diff --git a/vendor/knative.dev/eventing/pkg/utils/logging.go b/vendor/knative.dev/eventing/pkg/utils/logging.go index 06b8f8e9a..655a6e15e 100644 --- a/vendor/knative.dev/eventing/pkg/utils/logging.go +++ b/vendor/knative.dev/eventing/pkg/utils/logging.go @@ -18,14 +18,24 @@ package utils import ( "context" + "flag" + "fmt" + "strconv" + "sync" + corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/klog/v2" + "go.uber.org/zap" kubeclient "knative.dev/pkg/client/injection/kube/client" "knative.dev/pkg/logging" ) +// KlogVerbosityKey is the key in config-logging ConfigMap for klog verbosity level. +const KlogVerbosityKey = "klog-verbosity" + // GetLoggingConfig fetches the logging ConfigMap from the given namespace and // parses it into a *logging.Config. If the ConfigMap is not found, it returns // the default logging config. @@ -38,3 +48,61 @@ func GetLoggingConfig(ctx context.Context, namespace, loggingConfigMapName strin } return logging.NewConfigFromConfigMap(loggingConfigMap) } + +// klogFlagSet is initialized once at package load; reused on every verbosity update. +// klogMu guards all writes to klogFlagSet — flag.FlagSet.Set is not goroutine-safe. +var ( + klogFlagSet = func() *flag.FlagSet { + fs := flag.NewFlagSet("klog", flag.ContinueOnError) + klog.InitFlags(fs) + return fs + }() + klogMu sync.Mutex +) + +// SetKlogVerbosity applies the given verbosity level string directly to klog. +// An empty string is a no-op and returns (false, nil). +// "0" resets verbosity and levels 1–9 raise it; both return (true, nil). +func SetKlogVerbosity(level string) (bool, error) { + if level == "" { + return false, nil + } + + n, err := strconv.Atoi(level) + if err != nil || n < 0 || n > 9 { + return false, fmt.Errorf("invalid %s value %q: must be an integer between 0 and 9", KlogVerbosityKey, level) + } + + klogMu.Lock() + defer klogMu.Unlock() + if err := klogFlagSet.Set("v", level); err != nil { + return false, err + } + return true, nil +} + +// SetKlogVerbosityFromConfigMap reads klog-verbosity from the ConfigMap data and +// applies it to klog. Missing or empty values are no-ops and return (false, nil). +// "0" resets verbosity and levels 1–9 raise it; both return (true, nil). +func SetKlogVerbosityFromConfigMap(data map[string]string) (bool, error) { + level, ok := data[KlogVerbosityKey] + if !ok || level == "" { + return false, nil + } + return SetKlogVerbosity(level) +} + +// UpdateKlogVerbosityFromConfigMap returns a ConfigMap watch handler that updates +// klog verbosity when the config-logging ConfigMap changes. +func UpdateKlogVerbosityFromConfigMap(logger *zap.SugaredLogger) func(*corev1.ConfigMap) { + return func(cm *corev1.ConfigMap) { + applied, err := SetKlogVerbosityFromConfigMap(cm.Data) + if err != nil { + logger.Warnw("Failed to update klog verbosity", zap.Error(err)) + return + } + if applied { + logger.Infow("Updated klog verbosity", zap.String("level", cm.Data[KlogVerbosityKey])) + } + } +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 97ac78365..aa945c18b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1126,7 +1126,7 @@ k8s.io/utils/net k8s.io/utils/pointer k8s.io/utils/ptr k8s.io/utils/trace -# knative.dev/eventing v0.49.1-0.20260504114613-23fbca18994b +# knative.dev/eventing v0.49.1-0.20260511150731-43e651f7940a ## explicit; go 1.25.0 knative.dev/eventing/pkg/adapter/v2 knative.dev/eventing/pkg/adapter/v2/test @@ -1197,12 +1197,12 @@ knative.dev/eventing/pkg/utils # knative.dev/hack v0.0.0-20260428014158-b2a37f1b6e7b ## explicit; go 1.24 knative.dev/hack -# knative.dev/networking v0.0.0-20260422140718-e9578ef11562 +# knative.dev/networking v0.0.0-20260428014950-5876dec269ce ## explicit; go 1.25.0 knative.dev/networking/pkg/apis/networking knative.dev/networking/pkg/apis/networking/v1alpha1 knative.dev/networking/pkg/config -# knative.dev/pkg v0.0.0-20260505204821-021ad709ec68 +# knative.dev/pkg v0.0.0-20260507212125-df317a52d112 ## explicit; go 1.25.0 knative.dev/pkg/apis knative.dev/pkg/apis/duck @@ -1281,7 +1281,7 @@ knative.dev/pkg/webhook/psbinding knative.dev/pkg/webhook/resourcesemantics knative.dev/pkg/webhook/resourcesemantics/defaulting knative.dev/pkg/webhook/resourcesemantics/validation -# knative.dev/serving v0.49.1-0.20260504070613-3d28fb878e74 +# knative.dev/serving v0.49.1-0.20260508141527-06f2ba70f0cc ## explicit; go 1.25.0 knative.dev/serving/pkg/apis/autoscaling knative.dev/serving/pkg/apis/autoscaling/v1alpha1