Integrate applications with a single command

Juju and charms greatly simplify the process of connecting applications and managing the lifecycle of your entire system

Juju Integrations are virtual connections between charms to allow the exchange of information. The Juju controller acts as a mediator for these virtual connections, letting individual applications directly communicate with each other.

When an integration is created between two applications or across units of the same application, Integration data is persisted to the controller database.

Integration data persists across invocations of the charm code and through the various event handlers that may access it.

Juju is aware of the overall deployment topology, and it uses this information to perform the optimal set of lifecycle management decisions for your entire system, not just individual applications.

How do integrations work?

All charms contain information about the services they offer or require to operate correctly. You can connect any two applications that:

  • Have compatible endpoints (i.e. requirer with provider, or peer with peer)
  • Implement the same interface (i.e. exchange the same set of information)

When your model contains two charms you wish to connect, all you have to do is to run juju integrate from the Juju controller and specify the two charms to be connected.

Juju will automatically create an integration between these two services. You generally do not need to worry about anything else.

The integrated applications communicate directly with each other and the communication is not mediated by the juju controller.

You can relate more and more services until you have a working model.

Once the integration is done, Juju will deal with all configurations and monitoring - you do not need to be an expert on each individual service! You can focus on judging if the model is a good representation of your idea or not.

The optimal configuration is persisted even if one of the applications is scaled, upgraded or the configuration changed. Juju and the charm code take care of it all.

Seamlessly connect applications across clouds with cross model integrations

Integrating applications across clouds is an even harder task due to the differences in the way storage, network and compute are represented

Cross model relations allow applications in different models to be integrated. Models may be hosted on the same controller, different controllers, and different clouds… or even across virtual machines and Kubernetes!

This functionality can enable your databases to be hosted on bare metal, where I/O performance is paramount, and your apps to live within Kubernetes, where scalability and application density are more important.

Read about these next:

Charmhub is a curated marketplace for charms which can be readily integrated into any infrastructure

Get started with Juju today

Read Docs