Upgrade/migrate from juju 3.6 to 4.0

Starting this thread to prepare for an upgrade from Juju 3.6 to juju 4.

I am planning to make an initial dry-run and I am looking for the best availble documentation before I start setting up a test migration and test the process in a safe setup.

This is the current documentation I’ve found: Upgrade your Juju deployment from 3.6 to 4.0 - Juju documentation

Below is our scenario:

The 3.6 setup

Concerns, from previous experiences: 2.9 to 3.6

  • Upgrading from 2.9 to 3.6 was scary. We ended up having to work with bugs and tricky challenges to complete that migration, many times dependent on Canonical developers.
  • We encountered mid-migration problems. That rendered us in a split environment for a long time. That placed a significant stress on the operations.
  • Since we can’t easily redeploy some of our models, we need to figure out a way to get out of a split environment situation.
  • It is hard to dry-run the migration, because it was almost impossible to recreate the full problem-space for a production environment.
  • The new dqlite database for 4.0 seems to require a s3 compatible storage in conjunction to the controller. Do I need to have a highly available ceph storage available before migration?

Why upgrade?

  • Juju has been very good to us - we want to make sure we are on the most upgraded/maintained version of Juju.
  • We would likte to work with Juju via proper API:s. This has not worked out for us with 3.6.
  • The inability to interact with Juju via API:s prevents us from writing supplementary code to assist us in the daily operations. Such as inventory querying, automation tools, AI driven operations etc. We hope Juju 4.0 can remedy some of that.

I hope I can share my experiences here over time and perhaps collect valuable insights in this thread.