-
Notifications
You must be signed in to change notification settings - Fork 301
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: Declarative Configuration of Multi-Cluster Ingress #794
Comments
How do the other cluster's endpoints get added to the LB in this case? |
The core idea is for the controller in each cluster to set the backend service's endpoints to current contents ∪ that cluster's endpoints. To outline the full procedure in a simple two-cluster case with no concurrency issues:
The weaknesses I can see in this are:
|
I'm interested in this because the current solution is so close to what I need OOTB. Today I can declaratively create a GCLB for a service running in GKE just by creating a service with the right annotation, and the corresponding ingress. Unfortunately, I can't create the same deployment in another cluster in another region that automatically gets added to the existing GCLB as additional backends. I've tried adding the ingress using the same reserved IP and that doesn't work. I can add the negs to original LB, but that gets overwritten eventually, and probably isn't practical. I just need a way to say add this service as a backend to an existing LB through some sort of annotation, and I'll have exactly what I need. |
I'm closing this because I think it's pretty clear at this juncture that this issue is not a going concern. |
At the moment, it does not appear to be possible to configure multi-cluster Ingress in a purely declarative fashion (i.e. via an Ingress resource). I'm going to summarise the state of play as I understand it and then propose a solution (which I am willing to implement).
There is currently a tool and Ingress class associated with multi-cluster Ingress, namely
kubemci
and the related classgce-multi-cluster
. These tools assume the following workflow:kubemci
to apply this Ingress to all target clustersThis appears to work well in my testing, but is problematic from an operational standpoint. My use-case relies heavily on declarative configuration, and the requirement to run
kubemci
repeatedly is challenging. Additionally,kubemci
does not support Network Endpoint Groups which, reading between the lines, appear to be the focus of Google's efforts to support cluster Ingress moving forwards.Accordingly, I think a new Ingress class that leverages NEGs to configure multi-cluster Ingress would be useful for me and other GKE users who rely on declarative configuration but wish to serve multiple clusters from an Ingress. I'd like to propose a new Ingress class which will attempt to configure itself in a purely declarative fashion as follows:
I believe this should be sufficient to allow declarative configuration of multi-cluster Ingress, but before I drop a PR on you folks I'd like to check a) to see whether you have any feedback on this proposal (as I'm sure you understand the internal of the GCLB much better than I do) and b) that you have bandwidth to review.
Thanks for reading!
The text was updated successfully, but these errors were encountered: