I am trying to run some of my micro services within consul service mesh. As per consul documentation, it is clear that consul takes care of routing, **load balancing** and service discovery. But their documentation also talks about 3rd party load balancers like NGINX, HAProxy and F5.

<https://learn.hashicorp.com/collections/consul/load-balancing>

If consul takes care of load balancing, then what is the purpose of these load balancers.

My assumptions,

1. These load balancers are to replace the built-in load balancing technique of consul, but the LB still uses consul service discovery data. (Why anyone need this !!!)
2. Consul only provides load balancing for east-west traffic (within the service mesh). To load balance north-south traffic (internet traffic), we need external load balancers.

Please let me know which of my assumption is correct