From 5a9661960cd09b721361d68fea1fae7bb257c10e Mon Sep 17 00:00:00 2001 From: Prajjwal Yadav Date: Thu, 4 Jul 2024 21:07:38 +0530 Subject: [PATCH] Add Kubernetes Version Check to Installation Script (#8025) * added k8s min version check * Refactor k8s version check and fix script path * fix goimports --- hack/install.sh | 6 ++++ test/version_check/check_k8s_version.go | 45 +++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 test/version_check/check_k8s_version.go diff --git a/hack/install.sh b/hack/install.sh index 8f51665c994..5f5e547984a 100755 --- a/hack/install.sh +++ b/hack/install.sh @@ -21,6 +21,12 @@ set -o errexit set -o nounset set -o pipefail +go run "$(dirname "$0")/../test/version_check/check_k8s_version.go" +if [[ $? -ne 0 ]]; then + echo "Kubernetes version check failed. Exiting." + exit 1 +fi + export SCALE_CHAOSDUCK_TO_ZERO=1 export REPLICAS=1 diff --git a/test/version_check/check_k8s_version.go b/test/version_check/check_k8s_version.go new file mode 100644 index 00000000000..09ed2e683d8 --- /dev/null +++ b/test/version_check/check_k8s_version.go @@ -0,0 +1,45 @@ +/* +Copyright 2024 The Knative 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 main + +import ( + "fmt" + "log" + + "k8s.io/client-go/kubernetes" + "knative.dev/pkg/test" + "knative.dev/pkg/version" +) + +func main() { + config, err := test.Flags.GetRESTConfig() + if err != nil { + log.Fatalf("Failed to create REST config: %v\n", err) + } + + kubeClient, err := kubernetes.NewForConfig(config) + if err != nil { + log.Fatalf("Failed to create Kubernetes client: %v\n", err) + } + + err = version.CheckMinimumVersion(kubeClient.Discovery()) + if err != nil { + log.Fatalf("Error: %v", err) + } + + fmt.Println("Kubernetes version is compatible.") +}