Achieving High Availability with Kubernetes

High Availability of your Build Cloud can be achieved in multiple ways. As the popularity and maturity of Kubernetes grows, we’ve also received an increase of questions from customers on using it to deploy the Build Cloud Controller & Registry. In this blog, we’ll describe achieving High Availability with Kubernetes.

Please refer to our Achieving High Availability with Kubernetes documentation to get the latest version of our Kubernetes information.

There are many ways to deploy your Anka Build Cloud into Kubernetes. Our Getting Started GitHub Repository has a few scripts available to help you run the Anka Build Cloud on your macOS device using minikube. These scripts will generate the necessary YAML you can use to deploy it into your minikube. You may, of course, choose to use Deployments instead of our Statefulsets and even split your controller and registry into separate pods. The YAML we generate includes:

  1. A namespace and context for Anka
  2. 3 ETCD pods
  3. 2 Build Cloud pods, each with two containers housing the Controller and Registry
  4. A shared volume for both Registry containers so they see the same VM Templates and Tags
  5. Load Balancers for each service

Here is a visual diagram for this:

We must mention that the differences between how our customers have deployed Kubernetes (AWS vs. google cloud vs. self-hosted) can require significant changes from the examples we provide. We’ve kept our examples simple to show the configuration and the necessary connections between components. For example, exposing your load balancer for the Controller service on the network may not be required (internal DNS might be available since your CI/CD tool is also inside of Kubernetes). Or, it may require approval and a specific process due to security. We recommend communicating with your DevOps/Kubernetes team to handle anything missing.

Once it’s up and running, you can join your nodes to the Controller load balancer IP/hostname. You will need to expose the Registry load balancer if you wish to connect your devices in order to push/pull VM Templates and Tags.

We hope that achieving High Availability with Kubernetes is less intimidating now. As always, if you have any questions or concerns, please contact us at [email protected] or on our Slack.

Share this post