Feature Highlight: Multi-cloud controller

Introduced to Juju 2.6.1, clouds can now be added to an existing controller using juju add-cloud. This gives rise to the “multi-cloud controller”.



Multi-cloud controllers are intended for cases where a clouds are stacked on top of one another. For example, when an OpenStack is deployed on top of MAAS or perhaps a LXD cluster is deployed on top of OpenStack.

The syntax of the most relevant options is:

juju add-cloud [--c=<controller>] [--force] [<cloud-name> <cloud-definition>]

When invoked without arguments, add-cloud begins an interactive session to help you provide details to Juju about your new cloud.

The -c (also --controller) option provides you with the ability to upload your cloud’s definition to a controller that you’re not currently connected to.

When adding a cloud to a controller, you may encounter an error asking you to use --force. This is a warning that Juju cannot guarantee high connectivity between the cloud and the controller.

Supported combinations are:

  • LXD controllers support LXD, MAAS and OpenStack clouds
  • MAAS controllers support MAAS and OpenStack clouds
  • OpenStack controllers supports OpenStack clouds

When using --force, you must consider network routability and other considerations. With the manual provider, for example, any collection of SSH-accessible machines can become a private cloud. Juju is unable to assume high-reliability.

To add Kubernetes clusters to your controller, use the add-k8s command.

Pretty pictures.
It’s explained nicely in the text; I’d perhaps be cautious around framing it as “any combination of clouds that have low latency connectivity with the controller” in the info graphic. People may not get the subtlety/ nuance of that statement. I’m not sure what alternative single sentence would suit. A key driver is a private data centre where people want to use LXD/MAAS/Openstack (and possibly CDK) on top of each other, or also multiple MAAS clouds, but only have to “waste” one node as a controller for the whole lot. Maybe just something that along the lines of “Multi-cloud controllers can be used… blah blah your data centre blah blah”. Along with the graphic, it should tell the story?

Also, not sure that add-cloud interactive works with multi-cloud yet, or maybe it was done when I wasn’t looking.

Makes sense, I’ll tone it down.

Haven’t checked myself recently. Will confirm.

Are there any future plans for using LXD clusters/pods in MAAS instead of KVM pods to colocate Juju controllers with other workloads to reduce their footprint?

1 Like

You’ll have to ask MAAS around their plans around lxd. I think that there’s some things there like setting up a lxd cluster and in the lxd setup you can connect it to maas for registering machines and such but not sure on the longer term plans there.