From 27d6ce44795b24d8d5f6d57d0ad614c867945650 Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Mon, 13 Sep 2021 16:41:56 +0200 Subject: [PATCH] deprecate klog flags Upstream klog continues to support all of its flags, but in Kubernetes only some will be supported going format (-v, -vmodule). With this change, the kubelet flags now look like this: $ go run ./cmd/kubelet --help | grep -e --log-dir -e '--v ' -e --vmodule -e --logging-format --log-dir string If non-empty, write log files in this directory (DEPRECATED: will be removed in a future release, see https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components) --logging-format string Sets the log format. Permitted formats: "json", "text". Non-default formats don't honor these flags: --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule, --log-flush-frequency, --add_dir_header, --alsologtostderr, --log_backtrace_at, --log_dir, --log_file, --log_file_max_size, --logtostderr, --one_output, --skip_headers, --skip_log_headers, --stderrthreshold, --vmodule. -v, --v Level number for the log level verbosity --vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging --- .../src/k8s.io/component-base/logs/logs.go | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/staging/src/k8s.io/component-base/logs/logs.go b/staging/src/k8s.io/component-base/logs/logs.go index 04b1c4f98df..2708fc24da4 100644 --- a/staging/src/k8s.io/component-base/logs/logs.go +++ b/staging/src/k8s.io/component-base/logs/logs.go @@ -31,6 +31,13 @@ import ( ) const logFlushFreqFlagName = "log-flush-frequency" +const deprecated = "will be removed in a future release, see https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components" + +// TODO (https://github.com/kubernetes/kubernetes/issues/105310): once klog +// flags are removed, stop warning about "Non-default formats don't honor these +// flags" in config.go and instead add this remark here. +// +// const vmoduleUsage = " (only works for the default text log format)" var ( packageFlags = flag.NewFlagSet("logging", flag.ContinueOnError) @@ -55,7 +62,22 @@ func AddFlags(fs *pflag.FlagSet) { if f := fs.Lookup("v"); f != nil { return } - fs.AddGoFlagSet(packageFlags) + + // Add flags with pflag deprecation remark for some klog flags. + packageFlags.VisitAll(func(f *flag.Flag) { + pf := pflag.PFlagFromGoFlag(f) + switch f.Name { + case "v", logFlushFreqFlagName: + // unchanged + case "vmodule": + // TODO: see above + // pf.Usage += vmoduleUsage + default: + // deprecated, but not hidden + pf.Deprecated = deprecated + } + fs.AddFlag(pf) + }) } // AddGoFlags is a variant of AddFlags for traditional Go flag.FlagSet. @@ -65,8 +87,20 @@ func AddFlags(fs *pflag.FlagSet) { // flag.Parse and cannot change to pflag because it would break their command // line interface. func AddGoFlags(fs *flag.FlagSet) { + // Add flags with deprecation remark added to the usage text of + // some klog flags. packageFlags.VisitAll(func(f *flag.Flag) { - fs.Var(f.Value, f.Name, f.Usage) + usage := f.Usage + switch f.Name { + case "v", logFlushFreqFlagName: + // unchanged + case "vmodule": + // TODO: see above + // usage += vmoduleUsage + default: + usage += " (DEPRECATED: " + deprecated + ")" + } + fs.Var(f.Value, f.Name, usage) }) }