Introduction
Envoy is an L7 high-performance proxy and communication bus developed in C++ and designed for large modern service-oriented architectures.
- It is a self-contained process designed to run alongside every application server.
- At its very core, Envoy is, in fact, an L3/L4 network proxy. A pluggable filter chain mechanism allows filters to be written to perform different 59.29 TCP/59.32 UDP proxy tasks and inserted into the main server.
- Envoy supports an additional HTTP L7 filter layer; HTTP filters can be plugged into the HTTP connection management subsystem that performs different tasks such as buffering, rate limiting, routing/forwarding, etc.
- When operating in HTTP mode, Envoy supports a routing subsystem capable of routing and redirecting requests based on path, authority, content type, runtime values, etc. This functionality is most useful when using Envoy as a front/edge proxy but is also leveraged when building a service-to-service mesh.
Envoy has many other high-level features, but the ones mentioned above make it perfect to be used as a 59.27 Sidecar Proxy in a service mesh.
Two core concepts about Envoy are related to this tutorial:
1. HTTP Connection Management
HTTP is such a critical component of modern service-oriented architectures that Envoy implements a large amount of HTTP-specific functionality.
Envoy has a built-in network-level filter called the HTTP connection manager, which translates raw bytes into HTTP level messages and events (e.g., headers received, body data received, trailers received, etc.). It also handles functionality common to all HTTP connections and requests, such as access logging, request ID generation and tracing, request/response header manipulation, route table management, and statistics.
2. Access Logging
When used in a service-mesh scenario, for example, in 99 Archive/Notion/Others/Rohit Ghumare (Public Notion Template)/Tools/Istio/Istio, the simplest kind of logging is Envoy's access logging.
Envoy proxies print access information to their standard output. The kubectl logs command can print Envoy's containers' standard output.