mirror of https://github.com/hashicorp/consul
56 lines
2.9 KiB
Markdown
56 lines
2.9 KiB
Markdown
---
|
|
layout: "intro"
|
|
page_title: "Consul vs. Envoy and Other Proxies"
|
|
sidebar_current: "vs-other-proxies"
|
|
description: |-
|
|
Modern service proxies provide high-level service routing, authentication, telemetry, and more for microservice and cloud environments. Envoy is a popular and feature rich proxy. This page describes how Consul relates to proxies such as Envoy.
|
|
---
|
|
|
|
# Consul vs. Envoy and Other Proxies
|
|
|
|
Modern service proxies provide high-level service routing, authentication,
|
|
telemetry, and more for microservice and cloud environments. Envoy is
|
|
a popular and feature rich proxy.
|
|
|
|
Proxies require a rich set of configuration to operate since backend
|
|
addresses, frontend listeners, routes, filters, telemetry shipping, and
|
|
more must all be configured. Further, a modern infrastructure contains
|
|
many proxies, often one proxy per service as proxies are deployed in
|
|
a "sidecar" model next to a service. Therefore, a primary challenge of
|
|
proxies is the configuration sprawl and orchestration.
|
|
|
|
Proxies form what is referred to as the "data plane": the pathway which
|
|
data travels for network connections. Above this is the "control plane"
|
|
which provides the rules and configuration for the data plane. Proxies
|
|
typically integrate with outside solutions to provide the control plane.
|
|
For example, Envoy integrates with Consul to dynamically populate
|
|
service backend addresses.
|
|
|
|
Consul is a control plane solution. The service catalog serves as a registry
|
|
for services and their addresses and can be used to route traffic for proxies.
|
|
The Connect feature of Consul provides the TLS certificates and service
|
|
access graph, but still requires a proxy to exist in the data path. As a
|
|
control plane, Consul integrates with many data plane solutions including
|
|
Envoy, HAProxy, Nginx, and more.
|
|
|
|
Consul provides a built-in proxy written in Go. This trades performance
|
|
for ease of use: by being built-in to Consul, users of Consul can get
|
|
started with solutions such as Connect without needing to install other
|
|
software. But the built-in proxy isn't meant to compete on features or
|
|
performance with dedicated proxy solutions such as Envoy. Consul enables
|
|
third party proxies to integrate with Connect and provide the data
|
|
plane with Consul operating as the control plane.
|
|
|
|
The Connect feature of Consul operates at layer 4 by authorizing a TLS
|
|
connection to succeed or fail. Proxies provide excellent solutions to
|
|
layer 7 concerns such as path-based routing, tracing and telemetry, and
|
|
more. Consul encourages using any proxy that provides the featureset required
|
|
by the user.
|
|
|
|
Further, by supporting a pluggable data plane model, the right proxy can be
|
|
deployed as needed. For non-performance critical applications, the built-in
|
|
proxy can be used. For performance critical applicaiotns, Envoy can be used.
|
|
For some applications that may require hardware, a hardware load balancer
|
|
such an F5 appliance may be deployed. Consul provides an API for all of these
|
|
solutions to be integrated.
|