pg_auto_failover is a Postgres extension that monitors and handles promotions within a Postgres cluster. It is optimized for simplicity and correctness. The minimal pg_auto_failover configuration requires three Postgres instances: a primary, a mirror, and a monitor. With a three node architecture, any Postgres instance can go down, and the application will still be able to read and write. For information on setting up a pg_auto_failover cluster, see VMware Postgres High Availability with pg_auto_failover.
Patroni is a template that allows the creation of a more customized high-availability solution, using Python and etcd. etcd serves as the Distributed Configuration Store (DRS). Patroni is considered a template rather than a solution, therefore offers inherently more configuration options, and flexibility (for example an HA architecture across remote data centers). The flexibility can add complexity therefore there can be numerous caveats to using it in a way that ensures High Availability at all times, even when resources are constrained. For information on setting up a VMware Postgres Patroni cluster, see VMware Postgres High Availability with Patroni.
For customers with simple HA scenarios, VMware recommends pg_auto_failover due to its simplicity. For more complex use cases where pg_auto_failover isn’t appropriate, VMware Postgres offers Patroni as the HA solution.