From c936e31d2065be84f4fd8ea6a7c8fea5f8e2c1d7 Mon Sep 17 00:00:00 2001 From: Igor Beliakov Date: Sat, 15 Nov 2025 12:31:57 +0100 Subject: [PATCH 1/2] fix(grafana): track all owned resources --- controllers/grafana_controller.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/controllers/grafana_controller.go b/controllers/grafana_controller.go index 9ab080bbd..e36ec3b76 100644 --- a/controllers/grafana_controller.go +++ b/controllers/grafana_controller.go @@ -30,6 +30,7 @@ import ( "github.com/grafana/grafana-operator/v5/controllers/reconcilers/grafana" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" + networkingv1 "k8s.io/api/networking/v1" "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -299,6 +300,11 @@ func (r *GrafanaReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manag For(&grafanav1beta1.Grafana{}, builder.WithPredicates(ignoreStatusUpdates())). Owns(&appsv1.Deployment{}, builder.WithPredicates(ignoreStatusUpdates())). Owns(&corev1.ConfigMap{}). + Owns(&corev1.PersistentVolumeClaim{}, builder.WithPredicates(ignoreStatusUpdates())). + Owns(&corev1.Secret{}). + Owns(&corev1.ServiceAccount{}). + Owns(&corev1.Service{}, builder.WithPredicates(ignoreStatusUpdates())). + Owns(&networkingv1.Ingress{}, builder.WithPredicates(ignoreStatusUpdates())). WithOptions(controller.Options{RateLimiter: defaultRateLimiter()}). Complete(r) if err != nil { From 16ea0557132db2c1102c64906e22193d45178c55 Mon Sep 17 00:00:00 2001 From: Igor Beliakov Date: Sat, 15 Nov 2025 13:08:10 +0100 Subject: [PATCH 2/2] fix(grafana): conditionally track routes --- controllers/grafana_controller.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/controllers/grafana_controller.go b/controllers/grafana_controller.go index e36ec3b76..75585923b 100644 --- a/controllers/grafana_controller.go +++ b/controllers/grafana_controller.go @@ -28,6 +28,7 @@ import ( "github.com/grafana/grafana-operator/v5/controllers/metrics" "github.com/grafana/grafana-operator/v5/controllers/reconcilers" "github.com/grafana/grafana-operator/v5/controllers/reconcilers/grafana" + routev1 "github.com/openshift/api/route/v1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" networkingv1 "k8s.io/api/networking/v1" @@ -296,7 +297,7 @@ func (r *GrafanaReconciler) syncStatuses(ctx context.Context) error { // SetupWithManager sets up the controller with the Manager. func (r *GrafanaReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager) error { - err := ctrl.NewControllerManagedBy(mgr). + b := ctrl.NewControllerManagedBy(mgr). For(&grafanav1beta1.Grafana{}, builder.WithPredicates(ignoreStatusUpdates())). Owns(&appsv1.Deployment{}, builder.WithPredicates(ignoreStatusUpdates())). Owns(&corev1.ConfigMap{}). @@ -305,8 +306,13 @@ func (r *GrafanaReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manag Owns(&corev1.ServiceAccount{}). Owns(&corev1.Service{}, builder.WithPredicates(ignoreStatusUpdates())). Owns(&networkingv1.Ingress{}, builder.WithPredicates(ignoreStatusUpdates())). - WithOptions(controller.Options{RateLimiter: defaultRateLimiter()}). - Complete(r) + WithOptions(controller.Options{RateLimiter: defaultRateLimiter()}) + + if r.IsOpenShift { + b.Owns(&routev1.Route{}, builder.WithPredicates(ignoreStatusUpdates())) + } + + err := b.Complete(r) if err != nil { return err }