From ee0355096e6597cec84c266f28d707cb3b945b46 Mon Sep 17 00:00:00 2001 From: Jorge Turrado Date: Fri, 13 Jan 2023 17:06:41 +0100 Subject: [PATCH 1/5] chore: Add a warning when KEDA run outside supported k8s versions Signed-off-by: Jorge Turrado --- cmd/adapter/main.go | 25 +++++++++++++----------- cmd/operator/main.go | 9 +-------- cmd/webhooks/main.go | 11 ++--------- pkg/util/motd.go | 46 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 28 deletions(-) create mode 100644 pkg/util/motd.go diff --git a/cmd/adapter/main.go b/cmd/adapter/main.go index d5a2149bb2a..14782f24043 100644 --- a/cmd/adapter/main.go +++ b/cmd/adapter/main.go @@ -21,7 +21,6 @@ import ( "flag" "fmt" "os" - "runtime" "sync" "time" @@ -48,7 +47,6 @@ import ( kedaprovider "github.com/kedacore/keda/v2/pkg/provider" "github.com/kedacore/keda/v2/pkg/scaling" kedautil "github.com/kedacore/keda/v2/pkg/util" - "github.com/kedacore/keda/v2/version" ) // Adapter creates External Metrics Provider @@ -202,13 +200,6 @@ func generateDefaultMetricsServiceAddr() string { return fmt.Sprintf("keda-operator.%s.svc.cluster.local:9666", kedautil.GetPodNamespace()) } -func printVersion() { - logger.Info(fmt.Sprintf("KEDA Version: %s", version.Version)) - logger.Info(fmt.Sprintf("KEDA Commit: %s", version.GitCommit)) - logger.Info(fmt.Sprintf("Go Version: %s", runtime.Version())) - logger.Info(fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)) -} - // getWatchNamespace returns the namespace the operator should be watching for changes func getWatchNamespace() (string, error) { const WatchNamespaceEnvVar = "WATCH_NAMESPACE" @@ -248,8 +239,6 @@ func main() { return } - printVersion() - ctrl.SetLogger(logger) // default to 3 seconds if they don't pass the env var @@ -272,6 +261,20 @@ func main() { } cmd.WithExternalMetrics(kedaProvider) + clientset, err := cmd.DiscoveryClient() + if err != nil { + logger.Error(err, "not able to get Kubernetes version") + return + } + version, err := clientset.ServerVersion() + if err != nil { + logger.Error(err, "not able to get Kubernetes version") + return + } + kubeVersion := kedautil.NewK8sVersion(version) + + kedautil.PrintMotd(logger, kubeVersion, "metrics server") + logger.Info(cmd.Message) if err = cmd.Run(stopCh); err != nil { return diff --git a/cmd/operator/main.go b/cmd/operator/main.go index b0cc8327fa7..5156f272142 100644 --- a/cmd/operator/main.go +++ b/cmd/operator/main.go @@ -20,7 +20,6 @@ import ( "flag" "fmt" "os" - "runtime" "time" "github.com/spf13/pflag" @@ -43,7 +42,6 @@ import ( "github.com/kedacore/keda/v2/pkg/metricsservice" "github.com/kedacore/keda/v2/pkg/scaling" kedautil "github.com/kedacore/keda/v2/pkg/util" - "github.com/kedacore/keda/v2/version" //+kubebuilder:scaffold:imports ) @@ -273,12 +271,7 @@ func main() { os.Exit(1) } - setupLog.Info("Starting manager") - setupLog.Info(fmt.Sprintf("KEDA Version: %s", version.Version)) - setupLog.Info(fmt.Sprintf("Git Commit: %s", version.GitCommit)) - setupLog.Info(fmt.Sprintf("Go Version: %s", runtime.Version())) - setupLog.Info(fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)) - setupLog.Info(fmt.Sprintf("Running on Kubernetes %s", kubeVersion.PrettyVersion), "version", kubeVersion.Version) + kedautil.PrintMotd(setupLog, kubeVersion, "manager") kubeInformerFactory.Start(ctx.Done()) diff --git a/cmd/webhooks/main.go b/cmd/webhooks/main.go index 796417082fb..ec40d3fc313 100644 --- a/cmd/webhooks/main.go +++ b/cmd/webhooks/main.go @@ -18,9 +18,7 @@ package main import ( "flag" - "fmt" "os" - "runtime" "github.com/spf13/pflag" apimachineryruntime "k8s.io/apimachinery/pkg/runtime" @@ -34,7 +32,7 @@ import ( kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1" "github.com/kedacore/keda/v2/pkg/k8s" - "github.com/kedacore/keda/v2/version" + kedautil "github.com/kedacore/keda/v2/pkg/util" //+kubebuilder:scaffold:imports ) @@ -98,12 +96,7 @@ func main() { os.Exit(1) } - setupLog.Info("Starting admission webhooks") - setupLog.Info(fmt.Sprintf("KEDA Version: %s", version.Version)) - setupLog.Info(fmt.Sprintf("Git Commit: %s", version.GitCommit)) - setupLog.Info(fmt.Sprintf("Go Version: %s", runtime.Version())) - setupLog.Info(fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)) - setupLog.Info(fmt.Sprintf("Running on Kubernetes %s", kubeVersion.PrettyVersion), "version", kubeVersion.Version) + kedautil.PrintMotd(setupLog, kubeVersion, "admission webhooks") setupWebhook(mgr, tlsMinVersion) diff --git a/pkg/util/motd.go b/pkg/util/motd.go new file mode 100644 index 00000000000..7e6c8eff391 --- /dev/null +++ b/pkg/util/motd.go @@ -0,0 +1,46 @@ +/* +Copyright 2023 The KEDA Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "fmt" + "runtime" + + "github.com/go-logr/logr" + + "github.com/kedacore/keda/v2/version" +) + +const ( + minSupportedVersion = 23 + maxSupportedVersion = 26 +) + +func PrintMotd(logger logr.Logger, kubeVersion K8sVersion, component string) { + logger.Info(fmt.Sprintf("Starting %s", component)) + logger.Info(fmt.Sprintf("KEDA Version: %s", version.Version)) + logger.Info(fmt.Sprintf("Git Commit: %s", version.GitCommit)) + logger.Info(fmt.Sprintf("Go Version: %s", runtime.Version())) + logger.Info(fmt.Sprintf("Go OS/Arch: %s/%s", runtime.GOOS, runtime.GOARCH)) + logger.Info(fmt.Sprintf("Running on Kubernetes %s", kubeVersion.PrettyVersion), "version", kubeVersion.Version) + + if kubeVersion.MinorVersion < minSupportedVersion || + kubeVersion.MinorVersion > maxSupportedVersion { + logger.Info(fmt.Sprintf("WARNING: KEDA %s doesn't officially support Kubernetes %s", version.Version, kubeVersion.Version)) + logger.Info("Check officially supported versions in https://keda.sh") + } +} From 13e34a641351ec66f67ec993d6344326501335ff Mon Sep 17 00:00:00 2001 From: Jorge Turrado Ferrero Date: Fri, 13 Jan 2023 20:21:09 +0100 Subject: [PATCH 2/5] Update pkg/util/motd.go Co-authored-by: Tom Kerkhove Signed-off-by: Jorge Turrado Ferrero --- pkg/util/motd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/util/motd.go b/pkg/util/motd.go index 7e6c8eff391..2f2c6df5027 100644 --- a/pkg/util/motd.go +++ b/pkg/util/motd.go @@ -40,7 +40,7 @@ func PrintMotd(logger logr.Logger, kubeVersion K8sVersion, component string) { if kubeVersion.MinorVersion < minSupportedVersion || kubeVersion.MinorVersion > maxSupportedVersion { - logger.Info(fmt.Sprintf("WARNING: KEDA %s doesn't officially support Kubernetes %s", version.Version, kubeVersion.Version)) + logger.Info(fmt.Sprintf("WARNING: KEDA %s does not provide support for Kubernetes %s", version.Version, kubeVersion.Version)) logger.Info("Check officially supported versions in https://keda.sh") } } From 004609e935875bef4b43a473a67dd8f953df3541 Mon Sep 17 00:00:00 2001 From: Jorge Turrado Date: Tue, 17 Jan 2023 00:05:06 +0100 Subject: [PATCH 3/5] apply feedback Signed-off-by: Jorge Turrado --- cmd/adapter/main.go | 2 +- cmd/operator/main.go | 2 +- cmd/webhooks/main.go | 2 +- pkg/util/{motd.go => welcome.go} | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) rename pkg/util/{motd.go => welcome.go} (82%) diff --git a/cmd/adapter/main.go b/cmd/adapter/main.go index 14782f24043..93c17ad76da 100644 --- a/cmd/adapter/main.go +++ b/cmd/adapter/main.go @@ -273,7 +273,7 @@ func main() { } kubeVersion := kedautil.NewK8sVersion(version) - kedautil.PrintMotd(logger, kubeVersion, "metrics server") + kedautil.PrintWelcome(logger, kubeVersion, "metrics server") logger.Info(cmd.Message) if err = cmd.Run(stopCh); err != nil { diff --git a/cmd/operator/main.go b/cmd/operator/main.go index 5156f272142..2930a7428f8 100644 --- a/cmd/operator/main.go +++ b/cmd/operator/main.go @@ -271,7 +271,7 @@ func main() { os.Exit(1) } - kedautil.PrintMotd(setupLog, kubeVersion, "manager") + kedautil.PrintWelcome(setupLog, kubeVersion, "manager") kubeInformerFactory.Start(ctx.Done()) diff --git a/cmd/webhooks/main.go b/cmd/webhooks/main.go index ec40d3fc313..ce797957576 100644 --- a/cmd/webhooks/main.go +++ b/cmd/webhooks/main.go @@ -96,7 +96,7 @@ func main() { os.Exit(1) } - kedautil.PrintMotd(setupLog, kubeVersion, "admission webhooks") + kedautil.PrintWelcome(setupLog, kubeVersion, "admission webhooks") setupWebhook(mgr, tlsMinVersion) diff --git a/pkg/util/motd.go b/pkg/util/welcome.go similarity index 82% rename from pkg/util/motd.go rename to pkg/util/welcome.go index 2f2c6df5027..fd421ffe535 100644 --- a/pkg/util/motd.go +++ b/pkg/util/welcome.go @@ -30,7 +30,7 @@ const ( maxSupportedVersion = 26 ) -func PrintMotd(logger logr.Logger, kubeVersion K8sVersion, component string) { +func PrintWelcome(logger logr.Logger, kubeVersion K8sVersion, component string) { logger.Info(fmt.Sprintf("Starting %s", component)) logger.Info(fmt.Sprintf("KEDA Version: %s", version.Version)) logger.Info(fmt.Sprintf("Git Commit: %s", version.GitCommit)) @@ -40,7 +40,7 @@ func PrintMotd(logger logr.Logger, kubeVersion K8sVersion, component string) { if kubeVersion.MinorVersion < minSupportedVersion || kubeVersion.MinorVersion > maxSupportedVersion { - logger.Info(fmt.Sprintf("WARNING: KEDA %s does not provide support for Kubernetes %s", version.Version, kubeVersion.Version)) - logger.Info("Check officially supported versions in https://keda.sh") + logger.Info(fmt.Sprintf("WARNING: KEDA %s hasn't been tested on Kubernetes %s", version.Version, kubeVersion.Version)) + logger.Info("You can check tested versions in https://keda.sh") } } From a950d1879de0352e19e917e1c66c6ad28a93548d Mon Sep 17 00:00:00 2001 From: Jorge Turrado Ferrero Date: Tue, 17 Jan 2023 11:01:34 +0100 Subject: [PATCH 4/5] apply feedback Co-authored-by: Zbynek Roubalik Signed-off-by: Jorge Turrado Ferrero --- pkg/util/welcome.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/util/welcome.go b/pkg/util/welcome.go index fd421ffe535..f6f2bb203da 100644 --- a/pkg/util/welcome.go +++ b/pkg/util/welcome.go @@ -41,6 +41,6 @@ func PrintWelcome(logger logr.Logger, kubeVersion K8sVersion, component string) if kubeVersion.MinorVersion < minSupportedVersion || kubeVersion.MinorVersion > maxSupportedVersion { logger.Info(fmt.Sprintf("WARNING: KEDA %s hasn't been tested on Kubernetes %s", version.Version, kubeVersion.Version)) - logger.Info("You can check tested versions in https://keda.sh") + logger.Info("You can check recommended versions on https://keda.sh") } } From e4184c054de62a3a05020d52751ba5ecdc0c6ca7 Mon Sep 17 00:00:00 2001 From: Jorge Turrado Date: Tue, 17 Jan 2023 12:47:34 +0100 Subject: [PATCH 5/5] update changelog Signed-off-by: Jorge Turrado --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fb5f8286e3..2faf6315afd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,7 @@ Here is an overview of all new **experimental** features: ### Improvements +- **General**: Add a warning when KEDA run outside supported k8s versions ([#4130](https://github.com/kedacore/keda/issues/4130)) - **General**: Use (self-signed) certificates for all the communications (internals and externals) ([#3931](https://github.com/kedacore/keda/issues/3931)) - **Redis Scalers**: Add support to Redis 7 ([#4052](https://github.com/kedacore/keda/issues/4052))