Replies: 2 comments 1 reply
-
|
One of the major problems when implementing the split was that we had a lot of "two-way" communications:
So I think that on design decisions:
|
Beta Was this translation helpful? Give feedback.
-
I had a short chat with @strongjz offline about this, but I'll write up what I suggested to him here. If there is an API between the Ingate control plane and the NGINX proxy fleet — without thinking about if it's push or pull, which side instigates the connection, and what format it takes — it's probably going to be some form of HTTP, either some REST structure or gRPC. Is mutual TLS a good fit here? It'd handle both encryption and authentication, and you can build the mTLS requirement into it from the start. Then you've got a certificate management problem. cert-manager is a good fit for that (disclaimer: I used to work for Jetstack). It is extra infrastructure, but I'd speculate that many users of Ingate will be wanting to mint external TLS certificates for TLSRoutes anyway and so already were going to install it. A simple way could be to have Ingate have a "use cert-manager" mode where you configure Ingate with an You could also have your API/NGINX read from K8s secrets directly and skip the mounting, but this way means that you could offer a "DIY" mode where you tell users "mount the certs in yourself, and manage them however you like". So a user could use a Vault sidecar or similar to accomplish the same — depending on their setup. Another thing that comes to mind is SPIFFE/SPIRE. The API and NGINX pods could connect to SPIRE Workload API and get issued cert SVIDs, and use those for mTLS. You probably don't want to make SPIRE a hard dependency of Ingate, so if you did this it might need to be an optional mode. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
We have worked on trying to split out the control plane and data plane with ingress-nginx. This means, running only go controller code in one deployment, running the Nginx data plane in separate pods. This leads to several advantages and design decisions we need to make.
Pros:
Cons:
Design decisions:
Beta Was this translation helpful? Give feedback.
All reactions