Juju is an Open Source Charmed Operator Framework. It helps you move from configuration management to application management and has two main components:

  • Charmed Operator Lifecycle Manager (OLM) - a hybrid-cloud application management and orchestration system that helps you from Day 0 to Day 2. Deploy, configure, scale, integrate, maintain and manage Kubernetes native, container-native and VM-native applications – and the relations between them.

    • Charmed Operators, packaged as “Charms”, are software that encapsulate a single application and all the code and know-how it takes to operate it on Kubernetes or machines.
  • Charmed Operator SDK - a guide to help you build Charmed Operators for use with the Charmed OLM.

A controller is the management node of a Juju cloud environment. It runs the API server and the underlying database. Its overall purpose is to keep state of all the models, applications, and machines in that environment. Although it is a special node, it is a machine that gets created by Juju and, in that sense, is similar to any other Juju machine.

During controller creation two models are also created, the ‘controller’ model and the ‘default’ model. Additional models may be added by the user very easily.

The minimum resources required for a controller are 3.5 GiB of memory and 1 vCPU.

Controller Management Tasks

Common controller management tasks are summarised below. The most important one is Creating a controller.

Back up a controller

Juju allows one to create, restore and manage backup files containing the controller configuration/metadata. If the controller or its host machine fails, it is possible to recreate the controller from the backup. See Controller backups for assistance.

Configure a controller

There are many settings available for configuring a controller, such as whether the controller will record auditing information. Controller configuration must be passed at controller-creation time, although some exceptions exist (i.e. some changes can be made after creation). This topic is covered in more depth in Configuring controllers.

Controller high availability

Each controller can be made highly available to add resilience to the operations of the controller itself. This topic is covered on the Controller high availability page.

Create a controller

The creation of a controller is a hallmark step in the setting up of a Juju environment. See Creating a controller for examples.

Destroy a controller

When a controller is destroyed all associated models and applications are also removed. It is a very destructive process.
See the Removing things for a full explanation.

Disable commands

A controller administrator can restrict what sorts of changes a user can make across the controller’s models. This topic is treated on the Disabling commands page.

List controllers

Use the controllers command to list all controllers known to the client. The currently active controller is indicated in the list with an asterisk(’*’).

Log in to a controller

A user can log in to a controller in various ways. See page Controller logins for details.

Show controller details

Use the show-controller command to show details for a controller. Information includes UUID, API endpoints, certificates, and bootstrap configuration.

Use the Juju GUI

Each controller creates a web GUI as an alternative method of management. The GUI is capable of deploying, scaling, and monitoring applications, as well as more advanced operations. More details can be found on the Juju GUI page.

Last updated a month ago.