diff --git a/cmd/main.go b/cmd/main.go index 5620a5b2..9c0287af 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -214,12 +214,13 @@ func main() { } r1 := &controllers.SystemReconciler{ - Client: mgr.GetClient(), - Scheme: mgr.GetScheme(), - Styra: styraClient, - Recorder: mgr.GetEventRecorderFor("system-controller"), - Metrics: systemMetrics, - Config: ctrlConfig, + Client: mgr.GetClient(), + Scheme: mgr.GetScheme(), + Styra: styraClient, + Recorder: mgr.GetEventRecorderFor("system-controller"), + Metrics: systemMetrics, + Config: ctrlConfig, + APIReader: mgr.GetAPIReader(), } if ctrlConfig.NotificationWebhooks != nil && ctrlConfig.NotificationWebhooks.SystemDatasourceChanged != "" { diff --git a/internal/controller/styra/system_controller.go b/internal/controller/styra/system_controller.go index d8f70f91..6f26e3ae 100644 --- a/internal/controller/styra/system_controller.go +++ b/internal/controller/styra/system_controller.go @@ -72,6 +72,7 @@ type SystemReconcilerMetrics struct { // SystemReconciler reconciles a System object type SystemReconciler struct { client.Client + APIReader client.Reader Scheme *runtime.Scheme Styra styra.ClientInterface WebhookClient webhook.Client @@ -98,7 +99,7 @@ func (r *SystemReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr log.Info("Fetching System") var system v1beta1.System - if err := r.Get(ctx, req.NamespacedName, &system); err != nil { + if err := r.APIReader.Get(ctx, req.NamespacedName, &system); err != nil { if k8serrors.IsNotFound(err) { log.Info("Could not find System in kubernetes") r.Metrics.ReconcileTime.WithLabelValues("delete").Observe(time.Since(start).Seconds()) @@ -135,6 +136,7 @@ func (r *SystemReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr } if err != nil { + log.Error(err, "Reconciliation failed") r.recordErrorEvent(&system, err) r.setSystemStatusError(&system, err) diff --git a/test/integration/controller/controller_suite_test.go b/test/integration/controller/controller_suite_test.go index 211c4523..858d5ce5 100644 --- a/test/integration/controller/controller_suite_test.go +++ b/test/integration/controller/controller_suite_test.go @@ -119,6 +119,7 @@ var _ = ginkgo.BeforeSuite(func() { webhookMock = &webhookmocks.Client{} systemReconciler := styractrls.SystemReconciler{ Client: k8sClient, + APIReader: k8sManager.GetAPIReader(), Scheme: k8sManager.GetScheme(), Styra: styraClientMock, WebhookClient: webhookMock, @@ -202,6 +203,7 @@ var _ = ginkgo.BeforeSuite(func() { //Controller with PodRestart enabled for SLPs. systemReconcilerPodRestart := styractrls.SystemReconciler{ Client: k8sClient, + APIReader: k8sManagerPodRestart.GetAPIReader(), Scheme: k8sManagerPodRestart.GetScheme(), Styra: styraClientMock, WebhookClient: webhookMock,