diff --git a/jsonnet/kube-prometheus/addons/managed-cluster.libsonnet b/jsonnet/kube-prometheus/addons/managed-cluster.libsonnet
index f9032abd27fd042b1a3ee58b9219d9ce9c472c0f..14d008d91ce1e1c668822b437010059c5508db0e 100644
--- a/jsonnet/kube-prometheus/addons/managed-cluster.libsonnet
+++ b/jsonnet/kube-prometheus/addons/managed-cluster.libsonnet
@@ -11,10 +11,17 @@
       for k in std.objectFields(j)
       if !std.setMember(k, ['KubeControllerManager', 'KubeScheduler'])
     },
+  },
+
+  local k = super.kubernetesControlPlane,
 
-    // Skip alerting rules too
-    prometheus+: {
-      rules+:: {
+  kubernetesControlPlane+: {
+    [q]: null
+    for q in std.objectFields(k)
+    if std.setMember(q, ['serviceMonitorKubeControllerManager', 'serviceMonitorKubeScheduler'])
+  } + {
+    prometheusRule+: {
+      spec+: {
         local g = super.groups,
         groups: [
           h
@@ -24,12 +31,4 @@
       },
     },
   },
-
-  // Same as above but for ServiceMonitor's
-  local p = super.prometheus,
-  prometheus+: {
-    [q]: p[q]
-    for q in std.objectFields(p)
-    if !std.setMember(q, ['serviceMonitorKubeControllerManager', 'serviceMonitorKubeScheduler'])
-  },
 }