kubemci: Command line tool to configure L7 load balancers using multiple kubernetes clusters
Clone or download
G-Harmon Merge pull request #200 from anneal/coveralls
Address Coveralls Reported Coverage Level
Latest commit c8c7970 Sep 5, 2018

README.md

kubemci

GoReportCard Widget Coveralls Widget GoDoc Widget Slack Widget

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: https://github.com/GoogleCloudPlatform/k8s-multicluster-ingress/issues/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.