From 5cc7aee416dfbedf7f457a458cc1aa7b11656a7d Mon Sep 17 00:00:00 2001 From: Mattia Lavacca Date: Fri, 11 Oct 2024 12:51:00 +0200 Subject: [PATCH] feat: make KonnectExtension conditionally enabled (#738) * feat: make KonnectExtension conditionally enabled The KonnectExtension functionality is enabled only in case the --enable-controller-konnect flag is set. Signed-off-by: Mattia Lavacca * update CHANGELOG.md Signed-off-by: Mattia Lavacca --------- Signed-off-by: Mattia Lavacca --- CHANGELOG.md | 3 +++ controller/dataplane/controller.go | 3 ++- controller/dataplane/controller_utils.go | 8 +++++++- modules/manager/controller_setup.go | 6 ++++-- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f44427b90..3d080edb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -106,6 +106,9 @@ - Apply Konnect-related customizations to `DataPlane`s that properly reference `KonnectExtension` resources. [#714](https://github.com/Kong/gateway-operator/pull/714) +- The KonnectExtension functionality is enabled only when the `--enable-controller-konnect` + flag or the `GATEWAY_OPERATOR_ENABLE_CONTROLLER_KONNECT` env var is set. + [#738](https://github.com/Kong/gateway-operator/pull/738) ### Fixed diff --git a/controller/dataplane/controller.go b/controller/dataplane/controller.go index fef68cc68..df9aa63b9 100644 --- a/controller/dataplane/controller.go +++ b/controller/dataplane/controller.go @@ -42,6 +42,7 @@ type Reconciler struct { Callbacks DataPlaneCallbacks ContextInjector ctxinjector.CtxInjector DefaultImage string + KonnectEnabled bool } // SetupWithManager sets up the controller with the Manager. @@ -91,7 +92,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu } log.Trace(logger, "applying extensions", dataplane) - patched, requeue, err := applyExtensions(ctx, r.Client, logger, dataplane) + patched, requeue, err := applyExtensions(ctx, r.Client, logger, dataplane, r.KonnectEnabled) if err != nil { if !requeue { log.Debug(logger, "failed to apply extensions", dataplane, "error:", err) diff --git a/controller/dataplane/controller_utils.go b/controller/dataplane/controller_utils.go index 3a3e2549a..0f2c033c3 100644 --- a/controller/dataplane/controller_utils.go +++ b/controller/dataplane/controller_utils.go @@ -322,10 +322,16 @@ func isDeploymentReady(deploymentStatus appsv1.DeploymentStatus) (metav1.Conditi // - requeue: a boolean indicating if the dataplane should be requeued. If the error was unexpected (e.g., because of API server error), the dataplane should be requeued. // In case the error is related to a misconfiguration, the dataplane does not need to be requeued, and feedback is provided into the dataplane status. // - err: an error in case of failure. -func applyExtensions(ctx context.Context, cl client.Client, logger logr.Logger, dataplane *operatorv1beta1.DataPlane) (patched bool, requeue bool, err error) { +func applyExtensions(ctx context.Context, cl client.Client, logger logr.Logger, dataplane *operatorv1beta1.DataPlane, konnectEnabled bool) (patched bool, requeue bool, err error) { if len(dataplane.Spec.Extensions) == 0 { return false, false, nil } + + // the konnect extension is the only one implemented at the moment. In case konnect is not enabled, we return early. + if !konnectEnabled { + return false, false, nil + } + condition := k8sutils.NewConditionWithGeneration(consts.ResolvedRefsType, metav1.ConditionTrue, consts.ResolvedRefsReason, "", dataplane.GetGeneration()) err = applyKonnectExtension(ctx, cl, dataplane) if err != nil { diff --git a/modules/manager/controller_setup.go b/modules/manager/controller_setup.go index 907d98aab..f17ba761d 100644 --- a/modules/manager/controller_setup.go +++ b/modules/manager/controller_setup.go @@ -294,7 +294,8 @@ func SetupControllers(mgr manager.Manager, c *Config) (map[string]ControllerDef, BeforeDeployment: dataplane.CreateCallbackManager(), AfterDeployment: dataplane.CreateCallbackManager(), }, - DefaultImage: consts.DefaultDataPlaneImage, + DefaultImage: consts.DefaultDataPlaneImage, + KonnectEnabled: c.KonnectControllersEnabled, }, }, // DataPlaneBlueGreen controller @@ -317,6 +318,7 @@ func SetupControllers(mgr manager.Manager, c *Config) (map[string]ControllerDef, BeforeDeployment: dataplane.CreateCallbackManager(), AfterDeployment: dataplane.CreateCallbackManager(), }, + KonnectEnabled: c.KonnectControllersEnabled, }, Callbacks: dataplane.DataPlaneCallbacks{ BeforeDeployment: dataplane.CreateCallbackManager(), @@ -347,7 +349,7 @@ func SetupControllers(mgr manager.Manager, c *Config) (map[string]ControllerDef, ), }, KonnectExtensionControllerName: { - Enabled: c.DataPlaneControllerEnabled || c.DataPlaneBlueGreenControllerEnabled, + Enabled: (c.DataPlaneControllerEnabled || c.DataPlaneBlueGreenControllerEnabled) && c.KonnectControllersEnabled, Controller: &dataplane.KonnectExtensionReconciler{ Client: mgr.GetClient(), DevelopmentMode: c.DevelopmentMode,