diff --git a/pkg/cluster/resources.go b/pkg/cluster/resources.go
index aa5964302f713f6645b4e65cef93a9271500a770..d9318ed04fb4260a445da2e5481437ec91f9fd6e 100644
--- a/pkg/cluster/resources.go
+++ b/pkg/cluster/resources.go
@@ -250,6 +250,20 @@ func (c *Cluster) updateService(role PostgresRole, newService *v1.Service) error
 	}
 	serviceName := util.NameFromMeta(c.Service[role].ObjectMeta)
 
+	if len(newService.ObjectMeta.Annotations) > 0 {
+
+		annotationsPatchData := metadataAnnotationsPatch(newService.ObjectMeta.Annotations)
+
+		_, err := c.KubeClient.Services(c.Service[role].Namespace).Patch(
+			c.Service[role].Name,
+			api.StrategicMergePatchType,
+			[]byte(annotationsPatchData), "")
+
+		if err != nil {
+			return fmt.Errorf("could not replace annotations for the service '%s': %v", serviceName, err)
+		}
+	}
+
 	patchData, err := specPatch(newService.Spec)
 	if err != nil {
 		return fmt.Errorf("could not form patch for the service '%s': %v", serviceName, err)
@@ -267,6 +281,7 @@ func (c *Cluster) updateService(role PostgresRole, newService *v1.Service) error
 	return nil
 }
 
+
 func (c *Cluster) deleteService(role PostgresRole) error {
 	c.logger.Debugf("Deleting service %s", role)
 	if c.Service[role] == nil {
diff --git a/pkg/cluster/util.go b/pkg/cluster/util.go
index b6416cd7ba4fbbea1ce2a4646b637e39133b0c3d..71986aa57c9811408a5809a95ffc61e4c66a90d0 100644
--- a/pkg/cluster/util.go
+++ b/pkg/cluster/util.go
@@ -63,6 +63,16 @@ func specPatch(spec interface{}) ([]byte, error) {
 	}{spec})
 }
 
+func metadataAnnotationsPatch(annotations map[string]string) (string) {
+	annotationsList := make([]string, 0, len(annotations))
+
+	for name, value := range(annotations) {
+		annotationsList = append(annotationsList, fmt.Sprintf(`"%s":"%s"`, name, value))
+	}
+	annotationsString := strings.Join(annotationsList, ",")
+	return fmt.Sprintf(`{"metadata":{"annotations": {"$patch":"replace", %s}}}`, annotationsString)
+}
+
 func (c *Cluster) logStatefulSetChanges(old, new *v1beta1.StatefulSet, isUpdate bool, reasons []string) {
 	if isUpdate {
 		c.logger.Infof("statefulset '%s' has been changed",