diff --git a/pkg/config/config.go b/pkg/config/config.go index edca53f..f866a43 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -43,6 +43,7 @@ import ( const ( flagEnableAdoptedResourceReconciler = "enable-adopted-resource-reconciler" + flagEnableFieldExportReconciler = "enable-field-export-reconciler" flagEnableLeaderElection = "enable-leader-election" flagLeaderElectionNamespace = "leader-election-namespace" flagMetricAddr = "metrics-addr" @@ -87,6 +88,7 @@ type Config struct { HealthzAddr string EnableLeaderElection bool EnableAdoptedResourceReconciler bool + EnableFieldExportReconciler bool LeaderElectionNamespace string EnableDevelopmentLogging bool AccountID string @@ -144,6 +146,11 @@ func (cfg *Config) BindFlags() { true, "Enable the AdoptedResource reconciler.", ) + flag.BoolVar( + &cfg.EnableFieldExportReconciler, flagEnableFieldExportReconciler, + true, + "Enable the FieldExport reconciler.", + ) flag.StringVar( // In the context of the controller-runtime library, if the LeaderElectionNamespace parametere is not // explicitly set, the library will automatically default its value to the content of the file diff --git a/pkg/runtime/service_controller.go b/pkg/runtime/service_controller.go index 7488c12..61f0ba3 100644 --- a/pkg/runtime/service_controller.go +++ b/pkg/runtime/service_controller.go @@ -258,18 +258,22 @@ func (c *serviceController) BindControllerManager(mgr ctrlrt.Manager, cfg ackcfg } } - exporterInstalled, err := c.GetFieldExportInstalled(mgr) + exporterInstalled := false exporterLogger := c.log.WithName("exporter") - if err != nil { - exporterLogger.Error(err, "unable to determine if the FieldExport CRD is installed in the cluster") - } else if !exporterInstalled { - exporterLogger.Info("FieldExport CRD not installed. The field export reconciler will not be started") - } else { - rec := NewFieldExportReconcilerForFieldExport(c, exporterLogger, cfg, c.metrics, cache) - if err := rec.BindControllerManager(mgr); err != nil { - return err + + if cfg.EnableFieldExportReconciler { + exporterInstalled, err := c.GetFieldExportInstalled(mgr) + if err != nil { + exporterLogger.Error(err, "unable to determine if the FieldExport CRD is installed in the cluster") + } else if !exporterInstalled { + exporterLogger.Info("FieldExport CRD not installed. The field export reconciler will not be started") + } else { + rec := NewFieldExportReconcilerForFieldExport(c, exporterLogger, cfg, c.metrics, cache) + if err := rec.BindControllerManager(mgr); err != nil { + return err + } + c.fieldExportReconciler = rec } - c.fieldExportReconciler = rec } // Get the list of resources to reconcile from the config @@ -305,7 +309,7 @@ func (c *serviceController) BindControllerManager(mgr ctrlrt.Manager, cfg ackcfg } c.reconcilers = append(c.reconcilers, rec) - if exporterInstalled { + if cfg.EnableFieldExportReconciler && exporterInstalled { rd := rmf.ResourceDescriptor() feRec := NewFieldExportReconcilerForAWSResource(c, exporterLogger, cfg, c.metrics, cache, rd) if err := feRec.BindControllerManager(mgr); err != nil {