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

Reply via email to