From 79286751b6bdec37d8603bea068b88a3bbf36eb8 Mon Sep 17 00:00:00 2001 From: Lachezar Tsonov Date: Fri, 21 Mar 2025 09:57:53 +0200 Subject: [PATCH 1/3] For runs without node (i.e. local), assume it is not gke --- cmd/controller/run.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/controller/run.go b/cmd/controller/run.go index 0e184573..f9e95c85 100644 --- a/cmd/controller/run.go +++ b/cmd/controller/run.go @@ -12,6 +12,7 @@ import ( "github.com/bombsimon/logrusr/v4" "github.com/google/uuid" "github.com/sirupsen/logrus" + apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apiserver/pkg/server/healthz" "k8s.io/client-go/dynamic" @@ -323,7 +324,7 @@ func (e *logContextError) Unwrap() error { func runningOnGKE(clientset *kubernetes.Clientset, cfg config.Config) (isGKE bool, err error) { err = waitext.Retry(context.Background(), waitext.DefaultExponentialBackoff(), 3, func(ctx context.Context) (bool, error) { node, err := clientset.CoreV1().Nodes().Get(ctx, cfg.SelfPod.Node, metav1.GetOptions{}) - if err != nil { + if err != nil && !apierrors.IsNotFound(err) { return true, fmt.Errorf("getting node: %w", err) } From e38e763682a9478a36a4da7be35e0fb457322d84 Mon Sep 17 00:00:00 2001 From: Lachezar Tsonov Date: Fri, 21 Mar 2025 10:02:42 +0200 Subject: [PATCH 2/3] Change confusing error so it doesn't only mention LEADER_ELECTION_NAMESPACE even if not using leader election. --- internal/config/config.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/internal/config/config.go b/internal/config/config.go index faebbc10..f3c3043c 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -127,7 +127,9 @@ func Get() Config { } if cfg.SelfPod.Namespace == "" { - required("LEADER_ELECTION_NAMESPACE") + // LEADER_ELECTION_NAMESPACE exists for backwards compatibility. + // But we use the namespace even without leader election so it's required. + required("self_pod.namespace or LEADER_ELECTION_NAMESPACE") } if cfg.LeaderElection.Enabled { From a1f521fe306e71fcbecc6fe8eabb18cbf6e1323a Mon Sep 17 00:00:00 2001 From: Lachezar Tsonov Date: Fri, 21 Mar 2025 10:07:05 +0200 Subject: [PATCH 3/3] One more check for node. --- cmd/controller/run.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cmd/controller/run.go b/cmd/controller/run.go index f9e95c85..2bd4aed9 100644 --- a/cmd/controller/run.go +++ b/cmd/controller/run.go @@ -207,6 +207,8 @@ func runController( log.Fatalf("failed to determine if running on GKE: %v", err) } + log.Infof("Running on GKE is: %v", isGKE) + if isGKE { csrMgr := csr.NewApprovalManager(log, clientset) if err := csrMgr.Start(ctx); err != nil { @@ -322,6 +324,11 @@ func (e *logContextError) Unwrap() error { } func runningOnGKE(clientset *kubernetes.Clientset, cfg config.Config) (isGKE bool, err error) { + // When running locally, there is no node. + if cfg.SelfPod.Node == "" { + return false, nil + } + err = waitext.Retry(context.Background(), waitext.DefaultExponentialBackoff(), 3, func(ctx context.Context) (bool, error) { node, err := clientset.CoreV1().Nodes().Get(ctx, cfg.SelfPod.Node, metav1.GetOptions{}) if err != nil && !apierrors.IsNotFound(err) {