Ingress vs MetalLB

I have a Kubernetes cluster on my own bare metal o the supported load balancers service isn’t available to me. In other words I can’t use a LoadBalancer Service object which I would use to expose my servers to public IP addresses. There are no plans to use any protocols other than HTTP/HTTPS over IPv4 and IPv6.

It looks like I have two options:

  1. Implement a load balancer function using MetalLB which then would allow the use of a LoadBalancer service object as if it were in a cloud.
  2. Use an Ingress object.

Are there other options for a scalable deployment?

Regardless, is there any text anywhere that describes the tradeoffs that would make it clear to someone without experience (that would be me) which is the better choice?