Skip to content

Generic Dynamic Forward Proxy with On Demand CDS #15026

@tigerlily-he

Description

@tigerlily-he

Title: Dynamically forward requests using Cluster / Endpoint Discovery Service (CDS/EDS) to look up endpoint addresses

Description:

Desired behavior:

We would like to have dynamic name resolution where the request is routed to an upstream cluster that is not known ahead of time. This is already possible with HTTP using DNS via the Dynamic Forward Proxy extension, but we’d like to be able to hook into the existing CDS/EDS tools to resolve clusters dynamically. This would allow for a more generic dynamic proxy and facilitate the implementation of delegation tables (dtabs).

A secondary goal is to use this dynamic forward proxy with non-HTTP protocols such as Thrift.

Potential Solutions:

  1. Expand on the Dynamic Forward Proxy Filter: This HTTP filter rewrites the host header with the provided value before DNS lookup. We could extend this filter to connect to Endpoint Discovery Service (EDS) instead of DNS cache for destination lookup.
  2. Use the programmatic API’s in ClusterManager to trigger Cluster Discovery Service (CDS): this looks promising but we’ll need a way to stall the request while CDS and EDS do their thing and there doesn’t appear to be a clean way to do so.
  3. An even better approach we’re not aware of.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/forward proxydesign proposalNeeds design doc/proposal before implementationenhancementFeature requests. Not bugs or questions.stalestalebot believes this issue/PR has not been touched recently

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions