diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritCluster.java b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritCluster.java
index 1fb8e0e..07c04ff 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritCluster.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/cluster/GerritCluster.java
@@ -59,13 +59,22 @@
   public Map<String, String> getLabels(String component, String createdBy) {
     Map<String, String> labels = new HashMap<>();
 
+    labels.putAll(getSelectorLabels(component));
+    labels.put("app.kubernetes.io/version", getClass().getPackage().getImplementationVersion());
+    labels.put("app.kubernetes.io/created-by", createdBy);
+
+    return labels;
+  }
+
+  @JsonIgnore
+  public Map<String, String> getSelectorLabels(String component) {
+    Map<String, String> labels = new HashMap<>();
+
     labels.put("app.kubernetes.io/name", "gerrit");
     labels.put("app.kubernetes.io/instance", getMetadata().getName());
-    labels.put("app.kubernetes.io/version", getClass().getPackage().getImplementationVersion());
     labels.put("app.kubernetes.io/component", component);
     labels.put("app.kubernetes.io/part-of", getMetadata().getName());
     labels.put("app.kubernetes.io/managed-by", "gerrit-operator");
-    labels.put("app.kubernetes.io/created-by", createdBy);
 
     return labels;
   }
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/ServiceDependentResource.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/ServiceDependentResource.java
index 0b7660a..9611d00 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/ServiceDependentResource.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/ServiceDependentResource.java
@@ -59,7 +59,7 @@
         .withNewSpec()
         .withType(gerrit.getSpec().getService().getType())
         .withPorts(getServicePorts(gerrit))
-        .withSelector(StatefulSetDependentResource.getLabels(gerritCluster, gerrit))
+        .withSelector(StatefulSetDependentResource.getSelectorLabels(gerritCluster, gerrit))
         .endSpec()
         .build();
   }
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/StatefulSetDependentResource.java b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/StatefulSetDependentResource.java
index 3aea878..f3cfd7b 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/StatefulSetDependentResource.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/gerrit/StatefulSetDependentResource.java
@@ -85,7 +85,7 @@
         .endRollingUpdate()
         .endUpdateStrategy()
         .withNewSelector()
-        .withMatchLabels(getLabels(gerritCluster, gerrit))
+        .withMatchLabels(getSelectorLabels(gerritCluster, gerrit))
         .endSelector()
         .withNewTemplate()
         .withNewMetadata()
@@ -135,7 +135,7 @@
         .addNewVolumeClaimTemplate()
         .withNewMetadata()
         .withName(SITE_VOLUME_NAME)
-        .withLabels(getLabels(gerritCluster, gerrit))
+        .withLabels(getSelectorLabels(gerritCluster, gerrit))
         .endMetadata()
         .withNewSpec()
         .withAccessModes("ReadWriteOnce")
@@ -150,10 +150,17 @@
     return stsBuilder.build();
   }
 
-  public static Map<String, String> getLabels(GerritCluster gerritCluster, Gerrit gerrit) {
+  private static String getComponentName(Gerrit gerrit) {
+    return String.format("gerrit-statefulset-%s", gerrit.getMetadata().getName());
+  }
+
+  public static Map<String, String> getSelectorLabels(GerritCluster gerritCluster, Gerrit gerrit) {
+    return gerritCluster.getSelectorLabels(getComponentName(gerrit));
+  }
+
+  private static Map<String, String> getLabels(GerritCluster gerritCluster, Gerrit gerrit) {
     return gerritCluster.getLabels(
-        String.format("gerrit-statefulset-%s", gerrit.getMetadata().getName()),
-        GerritReconciler.class.getSimpleName());
+        getComponentName(gerrit), GerritReconciler.class.getSimpleName());
   }
 
   private Set<Volume> getVolumes(Gerrit gerrit, GerritCluster gerritCluster) {
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverDeploymentDependentResource.java b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverDeploymentDependentResource.java
index b50fc5a..3bf31a4 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverDeploymentDependentResource.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverDeploymentDependentResource.java
@@ -81,7 +81,7 @@
         .endRollingUpdate()
         .endStrategy()
         .withNewSelector()
-        .withMatchLabels(getLabels(gerritCluster, receiver))
+        .withMatchLabels(getSelectorLabels(gerritCluster, receiver))
         .endSelector()
         .withNewTemplate()
         .withNewMetadata()
@@ -117,10 +117,18 @@
     return deploymentBuilder.build();
   }
 
+  private static String getComponentName(Receiver receiver) {
+    return String.format("receiver-deployment-%s", receiver.getMetadata().getName());
+  }
+
+  public static Map<String, String> getSelectorLabels(
+      GerritCluster gerritCluster, Receiver receiver) {
+    return gerritCluster.getSelectorLabels(getComponentName(receiver));
+  }
+
   public static Map<String, String> getLabels(GerritCluster gerritCluster, Receiver receiver) {
     return gerritCluster.getLabels(
-        String.format("receiver-deployment-%s", receiver.getMetadata().getName()),
-        ReceiverReconciler.class.getSimpleName());
+        getComponentName(receiver), ReceiverReconciler.class.getSimpleName());
   }
 
   private Set<Volume> getVolumes(Receiver receiver, GerritCluster gerritCluster) {
diff --git a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverServiceDependentResource.java b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverServiceDependentResource.java
index 1bce580..cd11d29 100644
--- a/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverServiceDependentResource.java
+++ b/operator/src/main/java/com/google/gerrit/k8s/operator/receiver/ReceiverServiceDependentResource.java
@@ -59,7 +59,8 @@
         .withNewSpec()
         .withType(receiver.getSpec().getService().getType())
         .withPorts(getServicePorts(receiver))
-        .withSelector(ReceiverDeploymentDependentResource.getLabels(gerritCluster, receiver))
+        .withSelector(
+            ReceiverDeploymentDependentResource.getSelectorLabels(gerritCluster, receiver))
         .endSpec()
         .build();
   }
