This is an automated email from the ASF dual-hosted git repository. ronething pushed a commit to branch chore/add_k8s_version_log in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git
commit dc98ce61be80fb05167bda00136591e81d1ce5f1 Author: Ashing Zheng <[email protected]> AuthorDate: Tue Jan 6 13:25:47 2026 +0800 fix: r Signed-off-by: Ashing Zheng <[email protected]> --- internal/manager/run.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/internal/manager/run.go b/internal/manager/run.go index 28a840bb..6e22a40b 100644 --- a/internal/manager/run.go +++ b/internal/manager/run.go @@ -26,6 +26,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/util/version" + "k8s.io/client-go/discovery" clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" @@ -164,6 +166,9 @@ func Run(ctx context.Context, logger logr.Logger) error { return err } + // Check Kubernetes cluster version + checkK8sVersion(mgr, setupLog) + readier := readiness.NewReadinessManager(mgr.GetClient(), logger) registerReadiness(mgr, readier) @@ -254,3 +259,38 @@ func Run(ctx context.Context, logger logr.Logger) error { setupLog.Info("starting controller manager") return mgr.Start(ctrl.SetupSignalHandler()) } + +func checkK8sVersion(mgr ctrl.Manager, logger logr.Logger) { + const minVersion = "1.26.0" + minV, err := version.ParseSemantic(minVersion) + if err != nil { + logger.Info("failed to parse minimum version", "error", err) + return + } + + discoveryClient, err := discovery.NewDiscoveryClientForConfig(mgr.GetConfig()) + if err != nil { + logger.Info("failed to create discovery client for version check", "error", err) + return + } + + serverVersion, err := discoveryClient.ServerVersion() + if err != nil { + logger.Info("failed to get Kubernetes server version", "error", err) + return + } + + currentVersion, err := version.ParseSemantic(serverVersion.GitVersion) + if err != nil { + logger.Info("failed to parse server version", "error", err) + return + } + + if !currentVersion.AtLeast(minV) { + logger.Info("WARNING: Kubernetes cluster version does not meet minimum requirement", + "currentVersion", currentVersion.String(), + "minimumVersion", minV.String(), + "reason", "APISIX Ingress Controller requires Kubernetes 1.26+.", + ) + } +}
