I am currently planning to implement a new reconciler called version-controller, plus a version controller CRD, to conduct the upgrade and even downgrade of the operator.
We need to have an official release as the foundational one, which starts to support the upgrade and downgrade. For example, if we pick the coming release 0.11.0 as the first one, the releases after 0.11.0, like 0.12.0, 0.13.0, etc, will support upgrading from 0.11.0 to the current version.
How long shall we keep the support of the old version upgrade? We can decide based on how frequent operator releases. Let's say 12 months. If we have 5 official releases: 0.11, 0.12, 0.13, 0.14 and 0.15, within a year. We need to document that we support upgrade and downgrade among any two of them. For 0.16, we may drop the upgrade support of 0.11(It could be other release, depending on if there are major CRD changes or manifest changes).
A PoC is implemented in PR #53. The upgrade process is as below:
- Install old version operator
- Create old CR, then old version of knative eventing is installed
- Install new version operator
- Create the version controller CR, specifying to upgrade or downgrade from which version to which version
- New CR is created, based on the old CR, by the the version controller reconciler
- Operator reconciler detects the new version CR and install the new version knative eventing
- Old CR clean-up(Not yet)
- Differences in manifests between versions(Not yet)
I am currently planning to implement a new reconciler called version-controller, plus a version controller CRD, to conduct the upgrade and even downgrade of the operator.
We need to have an official release as the foundational one, which starts to support the upgrade and downgrade. For example, if we pick the coming release 0.11.0 as the first one, the releases after 0.11.0, like 0.12.0, 0.13.0, etc, will support upgrading from 0.11.0 to the current version.
How long shall we keep the support of the old version upgrade? We can decide based on how frequent operator releases. Let's say 12 months. If we have 5 official releases: 0.11, 0.12, 0.13, 0.14 and 0.15, within a year. We need to document that we support upgrade and downgrade among any two of them. For 0.16, we may drop the upgrade support of 0.11(It could be other release, depending on if there are major CRD changes or manifest changes).
A PoC is implemented in PR #53. The upgrade process is as below: