@@ -27,13 +27,16 @@ import (
2727 "sigs.k8s.io/controller-runtime/pkg/builder"
2828 "sigs.k8s.io/controller-runtime/pkg/client"
2929 "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
30+ "sigs.k8s.io/controller-runtime/pkg/event"
3031 "sigs.k8s.io/controller-runtime/pkg/manager"
32+ "sigs.k8s.io/controller-runtime/pkg/predicate"
3133 "sigs.k8s.io/controller-runtime/pkg/reconcile"
3234
3335 "github.com/percona/percona-postgresql-operator/internal/config"
3436 "github.com/percona/percona-postgresql-operator/internal/controller/runtime"
3537 "github.com/percona/percona-postgresql-operator/internal/initialize"
3638 "github.com/percona/percona-postgresql-operator/internal/logging"
39+ "github.com/percona/percona-postgresql-operator/internal/naming"
3740 "github.com/percona/percona-postgresql-operator/internal/pgaudit"
3841 "github.com/percona/percona-postgresql-operator/internal/pgbackrest"
3942 "github.com/percona/percona-postgresql-operator/internal/pgbouncer"
@@ -504,9 +507,22 @@ func (r *Reconciler) SetupWithManager(mgr manager.Manager) error {
504507 }
505508 }
506509
510+ // K8SPG-712: Allow overriding default configurations
511+ configMapPredicate := builder.WithPredicates(predicate.Funcs{
512+ UpdateFunc: func(e event.UpdateEvent) bool {
513+ configMap, ok := e.ObjectNew.(*corev1.ConfigMap)
514+ if !ok {
515+ return true
516+ }
517+ // Skip reconciliation if the ConfigMap has the specified annotation
518+ _, hasAnnotation := configMap.Annotations[naming.OverrideConfigAnnotation]
519+ return !hasAnnotation
520+ },
521+ })
522+
507523 return builder.ControllerManagedBy(mgr).
508524 For(&v1beta1.PostgresCluster{}).
509- Owns(&corev1.ConfigMap{}).
525+ Owns(&corev1.ConfigMap{}, configMapPredicate). // K8SPG-712
510526 Owns(&corev1.Endpoints{}).
511527 Owns(&corev1.PersistentVolumeClaim{}).
512528 Owns(&corev1.Secret{}).
0 commit comments