diff --git a/controllers/kuadrant_controller.go b/controllers/kuadrant_controller.go index 138c8ae6a..4927ebd0b 100644 --- a/controllers/kuadrant_controller.go +++ b/controllers/kuadrant_controller.go @@ -28,6 +28,7 @@ import ( iopv1alpha1 "istio.io/istio/operator/pkg/apis/istio/v1alpha1" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" + rbacv1 "k8s.io/api/rbac/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -406,6 +407,25 @@ func (r *KuadrantReconciler) createOnlyInKuadrantNSCb(ctx context.Context, kObj v1.EnvVar{Name: envLimitadorName, Value: limitadorName}, ) newObj = obj + // TODO: DRY the following 2 case switches + case *rbacv1.RoleBinding: + if obj.Name == "kuadrant-leader-election-rolebinding" { + for i, subject := range obj.Subjects { + if subject.Name == "kuadrant-controller-manager" { + obj.Subjects[i].Namespace = kObj.Namespace + } + } + } + newObj = obj + case *rbacv1.ClusterRoleBinding: + if obj.Name == "kuadrant-manager-rolebinding" { + for i, subject := range obj.Subjects { + if subject.Name == "kuadrant-controller-manager" { + obj.Subjects[i].Namespace = kObj.Namespace + } + } + } + newObj = obj default: } newObjCloned := newObj.DeepCopyObject()