Juju exposes different upgrading scenarios for the various software components. There is no inherent reason to upgrade components at the same time or to upgrade components in a specific order. What often dictates an upgrade is a desired feature in a new version of one component. This may, either before or after, necessitate the upgrade of another component.
A Juju client can be generally described as the software for managing Juju. The Juju client version is independent of the controller version, so upgrading the Juju CLI locally will not affect the controller version. Each Juju client has been built so that each client version can interact with the same major version of the controller version. For example, 2.8.1 client can talk to a 2.4.6 controller and vice versa. There are some notable exceptions to this rule; calling
juju status and
juju upgrade-model will work to ensure migration to the next major version.
More information about upgrading clients can be found at upgrading the client
A Juju Model defines a space for application units to be deployed. Models encapsulate the configuration, user access and layout of application topology (units, machines, containers) easily under a controller. A controller is also a Juju Model, in turn can have indefinite number of models to manage.
Model versions are not restricted to be locked at the same version as every other version, including the controller model version. Allowing for upgrading strategies between models, without affecting other models under the same controller. Upgrading a model ahead of the controller model is not permitted and it is expected that controller models are upgraded first.
Information about upgrading models, including controller models can be found at upgrading models
A Juju Application is the manifestation of the deployed charm software. New updates of a charm can then be ‘refreshed’ to update the application. Juju provides the same client command for refreshing local, charm-store and Charmhub charms.
See upgrading applications for more information.
Juju provides a mechanism for upgrading a machine’s series once a machine has been added to a Juju Model. Juju allows the machine to be updated to a newer operating system, whilst the Application is still being served.