Is PSA supported at all?

Description:

I could find some code inside psmdb-operator that seems to be designed to handle PSA configurations, but trying to spin up a PSA cluster always fails with:

    message: 'Error: failed to update config members: set votes: write mongo config:
      replSetReconfig: (NewReplicaSetConfigurationIncompatible) Rejecting reconfig
      where the new config has a PSA topology and the secondary is electable, but
      the old config contains only one writable node. Refer to https://docs.mongodb.com/manual/reference/method/rs.reconfigForPSASet/
      for next steps on reconfiguring a PSA set.'

Steps to Reproduce:

Apply this test config:

apiVersion: psmdb.percona.com/v1
kind: PerconaServerMongoDB
metadata:
  name: percongo
spec:
  crVersion: 1.21.1
  image: percona/percona-server-mongodb:8.0.12-4
  sharding:
    enabled: false
  unsafeFlags:
    replsetSize: true
  replsets:
    - name: rs0
      size: 2
      arbiter:
        enabled: true
        size: 1
      configuration: |
        security:
          enableEncryption: false
      volumeSpec:
        persistentVolumeClaim:
          accessModes: [ "ReadWriteOnce" ]
          resources:
            requests:
              storage: 32Gi
      affinity:
        antiAffinityTopologyKey: none
      storage:
        wiredTiger:
          collectionConfig:
            blockCompressor: zstd
      resources:
        requests:
          memory: 1024Mi
          cpu: 250m
        limits:
          memory: 1024Mi



Version:

psmdb-operator: 1.21.1
percona-server-mongodb: 8.0.12-4

Logs:

2025-12-03T13:12:07.835Z	ERROR	Reconciler error	{"controller": "psmdb-controller", "controllerGroup": "psmdb.percona.com", "controllerKind": "PerconaServerMongoDB", "PerconaServerMongoDB": {"name":"percongo","namespace":"default"}, "namespace": "default", "name": "percongo", "reconcileID": "3a3926be-561a-4061-b8c3-77cf21bd441d", "error": "reconcile statefulsets: failed to update config members: set votes: write mongo config: replSetReconfig: (NewReplicaSetConfigurationIncompatible) Rejecting reconfig where the new config has a PSA topology and the secondary is electable, but the old config contains only one writable node. Refer to 
 for next steps on reconfiguring a PSA set.", "errorVerbose": "failed to update config members: set votes: write mongo config: replSetReconfig: (NewReplicaSetConfigurationIncompatible) Rejecting reconfig where the new config has a PSA topology and the secondary is electable, but the old config contains only one writable node. Refer to 
 for next steps on reconfiguring a PSA set.\nreconcile statefulsets\ngithub.com/percona/percona-server-mongodb-operator/pkg/controller/perconaservermongodb.(*ReconcilePerconaServerMongoDB).Reconcile\n\t/go/src/github.com/percona/percona-server-mongodb-operator/pkg/controller/perconaservermongodb/psmdb_controller.go:425\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/internal/controller/controller.go:216\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/internal/controller/controller.go:461\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/internal/controller/controller.go:421\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func1.1\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/internal/controller/controller.go:296\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1693"}

sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler

	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/internal/controller/controller.go:474

sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem

	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/internal/controller/controller.go:421

sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func1.1

	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.22.1/pkg/internal/controller/controller.go:296

Expected Result:

Either a clear error and psmdb-operator refuses to do PSA.

Or spin up a PSA configuration properly.

Actual Result:

Pods are set up, but configuration might or might not be fine, operator stuck in reconciliation loop

Additional Information:

I did not try to manually reconfig the replicaSet - I wasn’t sure which change the operator intended to do in the failed reconciliation step.