Roadmap & Releases

The :juju: Juju team, in conjunction with the :snake: Charmed Operator Framework team maintains a public roadmap!

:calendar: Visit the roadmap

The expander below has instructions to try any specific release, or grab the release tarballs on Github.

Learn how to run a specific client, model and controller version

To upgrade to a new release of Juju, check out the instructions for upgrading the client or a model.

Upgrading the client is as easy as:

sudo snap refresh juju --classic --channel=latest/stable
# or 
sudo snap refresh juju --classic --channel=latest/candidate

If you’d like to upgrade a controller to a stable release:

juju upgrade-controller <controller>

And for a candidate release:

juju upgrade-controller <controller> --agent-stream=proposed

Before attempting any controller upgrades, you should consider if you need to backup your controller.

:juju: Juju 2.9.15 Candidate - 24 Sept 2021

This release improves the robustness of repeated cross model relation setup / teardown.
There’s also some improvements to how raft is used internally to manage leases.

:hammer_and_wrench: Fixes:

  • ceph mon does not render data to ceph-rados after redployment of ceph-radosgw only (LP)
  • Unable to remove offers when 2 endpoints are offered with the same application (LP)
  • upgrading 2.9.12 to 2.9.13 gets stuck in ‘raftlease response timeout’ (LP)
  • pod-spec uniter exits on pending action op when remote caas container died (LP)

See the full list in the milestone page.

:juju: Juju 2.9.14 - 14 Sept 2021

This release fixes an upgrade issue found during testing of the 2.9.13 release.
There’s also an additional fix for an earlier regression deploying LXD containers on AWS.

:hammer_and_wrench: Fixes:

  • Juju fails to provision LXD containers with LXD >= 4.18 (LP)
  • Juju is unable to match machine address CIDRs to subnet CIDRs on Equinix Metal clouds (LP)
  • Non POSIX-compatible script used in /etc/profile.d/ (LP)
  • In AWS using spaces and fan network for a private network does not allow LXC containers to start(LP)

See the full list in the milestone page.

:juju: Juju 2.9.13 - Release cancelled, replaced by 2.9.14

This release adds support for pulling images used for CAAS models from private OCI registries! This means you can host your own jujud-operator, charm-base and juju-db images. This initial release focuses on private registries on Dockerhub, with other public cloud registry support coming in a future release. More details in this post.

:hammer_and_wrench: Fixes:

  • Juju fails to provision LXD containers with LXD >= 4.18 (LP)
  • Juju is unable to match machine address CIDRs to subnet CIDRs on Equinix Metal clouds (LP)
  • Non POSIX-compatible script used in /etc/profile.d/ (LP)

See the full list in the milestone page.

:juju: Juju 2.9.12 - 30 Aug 2021

:hammer_and_wrench: Fixes:

  • Cross-model relations broken for CAAS (LP)
  • Boot failure when model-config sets snap-proxy (LP)
  • The juju export-bundle command gives error after upgrade (LP)
  • Several updates for the Raft engine that handles leases. These are steps to address (LP), though that issue is not completely resolved.

See the full list in the milestone page.

:juju: Juju 2.9.11 - 17 Aug 2021

:hammer_and_wrench: Fixes:

  • Resource downloads are very slow in some cases (LP)
  • Upgrading the mongodb snap causes controller to hang without restarting mongod (LP)
  • OpenStack provider: retry-provisioning doesn’t work for Quota exceeded for ... (LP)

See the full list in the milestone page.

:juju: Juju 2.9.10 - 03 Aug 2021

A new logging label: charmhub. To enable debugging information about Charmhub, you can now use the following:

juju model-config -m controller "logging-config='#charmhub=TRACE'"

:hammer_and_wrench: Fixes:

  • Unable to upgrade-charm a pod_spec charm to sidecar charm (LP)
  • OOM and high load upgrading to 2.9.7 (LP)
  • Controller not caching agent binaries across models (LP)
  • Bundle with local metadata v2 k8s sidecar charm fails for “metadata v1” (LP)
  • The network-get hook returns the vip as ingress address (LP)

See the full list in the milestone page.

:juju: Juju 2.9.9 - 19 Jul 2021

:hammer_and_wrench: Fixes:

  • Juju 2.9.8 tries to use an empty UID when deleting Kubernetes objects, and cannot remove applications (LP)
  • The juju-log output going to machine log file instead of unit log file in Juju 2.9.5 (LP)
  • Deployment of private charms is broken in 2.9 (was working in 2.8) (LP)
  • [Windows] Juju.exe and MicroK8s.exe bootstrap error (LP)

See the full list in the milestone page.

:juju: Juju 2.9.8 - 13 Jul 2021

This release introduces support for bootstrapping and deploying workloads to Equinix cloud. To try out the new provider:

  • Run juju update-public-clouds --client to ensure that provider API endpoint list is up to date.
  • Add a credential for the equinix cloud (juju add-credential equinix). You will need to specify your equinix project ID and provide an API key. You can use the equinix console to look up your project ID and generate API tokens.
  • Select a metro area and bootstrap a new controller. For example to bootstrap to the Amsterdam data-center you may run the following command: juju bootstrap equinix/am.


  • Due to substrate limitations, the equinix provider does not implement support for firewalls. As a result, workloads deployed to machines under the same project ID can reach each other even across Juju models.
  • Deployed machines are always assigned both a public and a private IP address. This means that any deployed charms are implicitly exposed and proper access control mechanisms need to be implemented to prevent unauthorized access to the deployed workloads.

This release also introduces logging labels which will help with the aggregation of logs via a label rather than a namespace.

juju model-config "logging-config='#http=TRACE'"

The above will turn on HTTP loggers to trace. This is a new UX feature to help with debugging, it’s not been full worked through Juju yet and might be subject to change.

:hammer_and_wrench: Fixes:

  • Juju fails to deploy mysql-k8s charm with its image resource (LP)
  • Juju 2.9 failing to create ClusterRoleBinding (LP)
  • Juju interprets caas-image-repo containing port number incorrectly (LP)

See the full list in the milestone page.

:juju: Juju 2.9.7 - 06 Jul 2021

:hammer_and_wrench: Fixes:

  • Juju upgrade 2.9 controller from local branch fails with wrong namespace. (LP)
  • Unit network data not populated on peer relations in sidecar charms (LP)
  • A juju refresh --switch ./local fails for metadata v1 charm (LP)
  • A migrated CaaS model will be left in the cluster after model destroyed (LP)
  • Unable to deploy postgresql-k8s charm from charmhub (LP)
  • Unable to deploy bundle with sidecar and pod_spec charms (LP)
  • IP address sometimes not set or incorrect on pebble_ready event (LP)
  • Improve juju ssh on k8s poor ux (LP)
  • Support encrypted EBS volumes for bootstrapping controllers on AWS (LP)
  • Document and support charmcraft's bundle.yaml fields (LP)
  • install hook run after juju upgrade-model 2.7.8 to 2.9.4 (LP)
  • controller fails to bring up jujud machine (LP)
  • The juju ssh --proxy command is not working on aws when targeting containers with FAN addresses (LP)
  • The juju resources revision date format uses year-date-month format instead of year-month-date (LP)
  • Using juju config with empty values erroneously resets since 2.9 (LP)

See the full list in the milestone page.

Last updated 2 days ago.