The problem is that by default Argo-CD handles TLS termination itself and always redirects HTTP requests to HTTPS. Combine that with an ingress controller that also handles TLS termination and always communicates with the backend service with HTTP and you get Argo-CD’s server always responding with a redirects to HTTPS.
For my case, i have Traefik with Let’s Encrypt where the SSL is offloaded, then ingress controller receives on port 80, then forward to argocd-server service on insecure port (80).
I fixed the issue of too-many-redirects by implementing this solution (Modifying the Deployment.yaml for argocd-server):
spec: containers: - command: - argocd-server - --staticassets - /shared/app - --insecure # <-- this thing needs to be added