Only patch one replica at a time and wait for AG to resynchronise before continuing. Beware of MFSP.
Patch Async Secondary Replica(s) first.
Patch Sync Secondary Replica(s)
Perform Controlled Failover
ALTER AVAILABILITY GROUP [AG_NAME] FAILOVER;
Assuming synchronous commit and synchronized state, this gives a zero-data-loss failover.This must be executed from a secondary replicaPatch former Primary
Perform Controlled Failover (only if you have to)