Use case: My service mesh requires access to an external 3rd party web service API which is rate limited to 1200 requests/minute (~20/sec) per originating IP, with a penalty of IP ban. The goal is to be able to load balance outgoing requests to the external web service across all node IPs, or from a specific set of nodes, enabling any particular pods within the cluster to exceed the rate limit for individual IPs when accessing through the service entry.
I have read the provided documentation for egress gateways, and also for applying rate limits.
My questions are:
- Can one egress gateway load balance outgoing requests evenly across several nodes? Or, will I need to deploy additional egress-gateways to specific nodes, then define separate virtual services for egress that point to each specific egress-gateway instance, then load balance between those VS’s within the VS corresponding to the service entry (using routing rules somehow)?
- Will configuring rate limits to a service entry/vs apply per node IP (or egress gateway), or will it globally limit all requests?
- Is this achievable using istio services/configurations alone? Or, will this require coding an additional edge service to queue the outgoing requests and dynamically load balance to separate nodes?
Im using Istio with GKE. Thanks!