envoyproxy / envoyproxy/gateway
feat: Extension Interface for Service Mesh Integration
- Dominant language
- Go
- Stars
- 3k
- Forks
- 864
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 140
Description
*Description*:
We are currently exploring solutions to bridge Envoy Gateway into the Istio service mesh.
[Existing solutions [1]](https://jimmysong.io/en/blog/envoy-gateway-integration-istio-mesh/) seem to recommend a double proxying approach with the Envoy Gateway Envoy proxy routing traffic through the Istio Envoy Proxy sidecar. While this is certainly feasible, it should be possible to eliminate this added complexity, particularly in the case of Istio as an xDS control plane in its own right.
We recently experimented with the [Envoy Gateway Extension Server [2]](https://gateway.envoyproxy.io/contributions/design/extending-envoy-gateway/) to merge the CDS and EDS feeds from Istio into the Envoy Gateway configuration feed. However, this hit a few snags:
- The current interfaces are implemented on a pull model, with Envoy Gateway only receiving updates from the extension server when it triggers an update.
- We can't inject EDS entities through the current interfaces at all.
- We are unable to reference an arbitrary CDS cluster (such as would be injected from Istio) from GRPCRoutes/HTTPRoutes, etc.
What I'd like to propose is expanding the following changes:
- Adding the ability to reference existing named clusters in Backend resources (i.e. adding a new `cluster` field into [BackendEndpoint [3]](https://gateway.envoyproxy.io/docs/api/extension_types/#backendendpoint))
- Adding a new gRPC API to the Extension Server that allows streamed updates to CDS and EDS entities to be pushed from an extension server.
We are also exploring other options in parallel, such as maintaining our own xDS aggregators that will run as sidecars to Envoy, merging the two streams. However, there is a case for a supported pattern to allow arbitrary (potentially non-xDS) service meshes to inject endpoint and cluster resources into the Envoy Gateway xDS feed.
*Relevant Links*:
- [1](https://jimmysong.io/en/blog/envoy-gateway-integration-istio-mesh/)
- [2](https://gateway.envoyproxy.io/contributions/design/extending-envoy-gateway/)
- [3](https://gateway.envoyproxy.io/docs/api/extension_types/#backendendpoint)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.