Options for real HA egress #1076
Replies: 2 comments 2 replies
-
@tschuering Thanks for those ideas. I actually did not implement the cilium egress feature myself. So I would need to dive deeper to be able to help you. I will have a look ASAP. In the meantime, @M4t7e maybe you could help here as you know cilium much better. |
Beta Was this translation helpful? Give feedback.
-
@tschuering Have you considered not using a dedicated egress gateway? That’s the best HA setup, with each node having its own internet connection, and I prefer it whenever possible 🙂 If you still need a dedicated egress gateway, your third option seems the most promising. It should work, and you can also automate it with keepalived (and custom scripts) or other tools. Unfortunately, I currently have no better solution for implementing this with the free version of Cilium. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
As far as I understand the current egress feature is a static defined floating IP or static node IP in one Cilium NAT policy, which is linked to the egress node defined in the agent_nodepools. You have well the option to create multiple egress nodes and therefore multiple egress policies and spread your application for the example in your deployment on the different egress policies (COMPLEX!), but I do not see any option to have real HA in that case, that I have the situation where I have one pod or namespace and I want to make sure that always egress is available. It is always pointed to the one static egress IP. Correct me if I am wrong? And sadly Cilium does not support HA egress itself in OSS, only in Enterprise version, where you can define multiple IPs in some sort of pools.
I had another use-case in a non-Kubernetes environment, where I actually managed to implement something like this via KeepAlived and floating IP. So if there is not yet a better option available, which I did not yet find here, there is a way I thought.
So I simulated some ideas:
First:
Second:
Third:
Simulated solution?
Whats next?
There are some options here. The first one is the dirty "simple" one, and the second could be the more mature one.
First
Second
@mysticaltech I am open for some other ideas or maybe I totally oversaw something essential, but I want basically to not go the Proxy (See in README -> "Deploy in a pre-constructed private network (for proxies etc") or NAT gateway way, as it would create the need in our company use case to deploy those via Ansible, as we do that for all non-k8s deployments currently. And also it is some non-k8s, k8s mixture I personally do not like. Proxy is also not an option cause it is in that case it is HTTP/HTTPS only.
Beta Was this translation helpful? Give feedback.
All reactions