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