After troubleshooting for a week I changed ingressClassName=nginx and keycloak worked just fine.
Given that I do have both nginx and avi-lb installed and they are both working fine it is mysterious to me that the exact same deployment works with one but not the other (other apps are working with avi-lb).
What could it be that is unique about keycloak which is causing it to fail with avi-lb, but work with nginx?