kubemci
[DEPRECATED] This has now been deprecated in favor of Ingress for Anthos. Ingress for Anthos is the recommended way to deploy multi-cluster ingress.
kubemci is a tool to configure Kubernetes ingress to load balance traffic across multiple Kubernetes clusters.
This is a Google Cloud Platform beta tool, suitable for limited production use cases: https://cloud.google.com/kubernetes-engine/docs/how-to/setup-multi-cluster-ingress
Getting started
You can try out kubemci using the zone printer example.
Follow the instructions as detailed here.
To create an HTTPS ingress, follow the instructions here.
More information
We have a video explaining what kubemci is intended for. It also shows a demo of setting up a multicluster ingress.
We also have an FAQ for common questions.
Contributing
See CONTRIBUTING.md for instructions on how to contribute.
You can also checkout existing issues for ways to contribute.
Feedback
If you are using kubemci, we would love to hear from you! Tell us how you are using it and what works and what does not: #117
Caveats
-
Users will be need to specify a unique NodePort for their multicluster services (that should be available across all clusters). This is a pretty onerous requirement, required because health checks need to be the same across all clusters.
-
This will only work for clusters in the same GCP project. In future, we can integrate with Shared VPC to enable cross project load balancing.
-
Load balancing across clusters in the same region will happen in proportion to the number of nodes in each cluster, instead of number of containers.
-
Since ILBs and ingress share the same instance groups (IGs), there is a race condition where deleting ILBs can cause the IG supposed to be used for multicluster ingress to be deleted. This will be fixed in the next ingress controller forced sync (every 10 mins). The same race condition exists in single cluster ingress as well.
-
Users need to explicitly update all their existing multicluster ingresses (by running
kubemci create ingress
), if they add nodes from a new zone to a cluster. This is required so that the tool can update backend service and add a new instance group to it.