My current setup involves an EKS Cluster with multiple namespaces (multi-tenant) across many different EKS nodes in private subnets. I would like the egress traffic from the pods to have a dedicated EIP per namespace. AFAIK there are no off the shelf solutions available for this problem. I have searched long and hard on the internet but in vain. Here are some of the solutions that I have tired, but eventually hit a roadblock
Istio Egress Gateway Allows you to direct all outbound traffic from pods via a dedicated egress gateway pod. But the egress gateway pod will assume the ip of the node on which it is running, which will not work for my use case. Also i have not found decent documentation around how i can setup multiple egress gateway pods across multiple nodes.
Calico Egress Gateway Very similar to Istio Egress Gateway solution and the same constraint applies
Custom Solution I have started implementing a custom solution, where I setup multiple Gateway Nodes in public subnet each with a dedicated EIP. I can now modify the ip routes/gateways in the private EKS node, to route traffic via a specific gateway node based on the pod source ip. This solution feels very kludgy and the operational overhead of such a solution is very high
I have looked at solutions like https://github.com/nirmata/kube-static-egress-ip, but have not had any luck with them
Is there a better approach/solution to this problem?
p.s: My production cluster is extremely large, I cannot afford to stand up a cluster for each namespace.