Skip to main content

Your submission was sent successfully! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates from Canonical and upcoming events where you can meet our team.Close

Thank you for contacting us. A member of our team will be in touch shortly. Close

An error occurred while submitting your form. Please try again or file a bug report. Close

How Juju works

Juju high-level architecture

Juju provides a declarative, model-driven, and interactive way to install, provision, maintain, update, and integrate applications on and across Kubernetes, Linux containers, virtual machines, and bare metal machines, on public or private cloud.

The following diagram provides an overview of the high level architecture of a Juju deployment and it describes the key components of the system. You can find a more detailed explanation of all the components you find in this page in the reference section of the Juju documentation.


A single tool to deploy and manage apps across VMs, Kubernetes, bare metal and cloud

Flexibility and portability are at the heart of Juju

Juju and charms support multiple cloud backends, giving you the choice to deploy your applications to the most cost effective, resource-rich or commercially suitable clouds, and then connect them in a way that suits your application model.

In addition Juju gives you flexibility in how to orchestrate your deployment. You can manage everything from a single, centralised Juju controller, or you can have multiple controllers installed on each layer of the infrastructure.


Juju on k8s

When applications are deployed on Kubernetes every instance of a workload runs in a pod with its own container and next to the Juju unit agent.

The model corresponds to a namespace and the applications are generally deployed as StatefulSets.

The Juju agent talks to a component called Pebble in order to interact with the workload. Pebble is a daemon that allows the management of non-system processes independently from the system services.

In this model the operations code (the charm) scales together with the workload, reducing the risk for bottlenecks at scale.


Juju on VMs and system containers

In the case of machines the charm runs in a container, alongside the juju agent.

The workload is deployed alongside the charm code and juju agent and it is directly controlled by the unit workers.


Read about these next:

Charm architecture encapsulates app management, with charms automating lifecycle actions via a controller, responsive to both admin commands and system events.


Juju integrations are virtual connections between applications to allow the exchange of information.


Get started with Juju today
Read Docs