Is envoy a replacement for traefik or fabio? How to configure it?

Hi. I am new to Envoy.

Both Traefik and Fabio work by querying Consul catalog of services. If a request is made, the hostname of that request is matched against that catalog and the request is forwarded to the destination host.

I can also write a Nomad job with ngixn with template configuration that generates nginx.conf from Consul registered services, and it will work the same as Traefik and Fabio. These methods are described in Load balancer deployment considerations | Nomad | HashiCorp Developer documentation. But there is no Envoy.

I do not care and do not want service mesh, I do not want consul connect, I am not interested in encrypting service-to-service connections, I do not want private or isolated connections. I am only interested in the public proxy.

Does Envoy support proxying the exported services of Nomad jobs the same way other proxies work? My research states it does, however I do not understand how. How should it be configured to do it? Could someone post Envoy or Nomad job configuration?

Should I deploy Envoy as a system job on all machines like I do with fabio or traefik or nginx, or does Nomad manage Envoy? What if there is no Consul installed on the particular agent? Does it also forward Nomad services, or only Consul registered services?

I do not understand if Envoy is a product that exists solely for some service-to-service communication, or is it a global proxy entrypoint https load-balancer. Thank you.

1 Like

The way I understand it, Envoy is first and foremost a Proxy with some bells and whistles.

If you are looking for a reverse proxy, Traefik is probably a better fit since Traefik is much more capable than Envoy in that regard.

Personally, Iā€™m using Envoy as part of the Consul integress-gateway to load balance the incoming traffic from my two compute nodes to my Traefik instance. Envoy/Consul Connect route the traffic from the ingress to Traefik, no matter which node Traefik is actually running on.

Add keepalived to the mix and you have a HA setup.

Another feature of Envoy/Consul Connect is the ability to move a downstream service to a different node without restarting the upstream service.
With pure Nomad, the upstream service gets the host + port of the downstream defined in an environment variable, which requires a restart if host + port of the downstream change.
With Consul Connect, this if fully transparent to the upstream service, CC takes care of the routing.