Introduction
When upgrading IBM Cloud Pak for Integration, the first action I recommend users take is to generate an upgrade plan using the upgrade planning tool. This was released in June 2022, and has since received several enhancements.
The easiest way to use the tool is with the CLI, specifying the version you want to upgrade to with --to and the namespace where the Platform UI is installed with --namespace
docker run --platform linux/amd64 --pull=always \
-it -v ${KUBECONFIG:-~/.kube/config}:/kube/config \
--env KUBECONFIG=/kube/config icr.io/cpopen/ibm-integration-upgrade-must-gather:v2 \
--namespace integration \
--to 2023.2 \
--debug
The upgrade planning tool supports upgrades from:
- The latest LTS release to the latest CD release
- The previous CD release to the latest CD release
This means that for example, if your installation is currently at 2022.2 or 2022.4 you can use the upgrade tool to upgrade to 2023.2, the latest CD release. There is no need to jump through every CD release when upgrading from LTS.
You can also use podman to run the command.
Features of the tool
The tool has a set of features I'll outline below. Crucially, it gives users and customers a set of ordered steps to follow to ensure the upgrade is successful.
The upgrade order often depends on what version the user is upgrading from and to, and what they currently have installed. By running the tool, you can make sure the steps are tailored to the environment without having the scan pages of documentation to consider all the permutations.
It does not, however, do the upgrade for you - it is read-only and only generates a plan to follow. If you'd like to see the whole process automated by passing an extra flag, let us know in a comment or Aha idea. Similarly, an other features you'd like to see added, let me know.
The upgrade planning tool will currently:
There are a few other quality of life features throughout the experience. From 2022.4.1 onwards, there is also a UI experience you can use. Depending on what fix pack you have, you might need to edit the PlatformNavigator custom resource to enable the Platform UI to understand how to upgrade itself and the Cloud Pak to a later version. The option can be enabled as per the instructions here.
As mentioned above, any feature request please reach out to me.
Example upgrade
I will walk through the process of upgrading the Cloud Pak using the tool on the CLI, with most of the components installed. I am currently at 2022.2.1 (LTS) and will be upgrading to 2023.2.1 (the latest CD).
When I first run it against my cluster, I get the output below. There are a total of 19 ordered steps, with sub-steps inside each step.
- I must complete the ordered steps in the printed order.
- I can complete the sub-steps under each ordered step in any order.
At a glance I can see:
- (Steps 1 & 2) The status of all my operators and instances are good, so I can proceed past this check.
- (Step 3) I've got the Automatic approval strategy, so I wont have to accept any InstallPlans when upgrading operators.
- (Step 4) Non of my instances are using integration tracing, so there is no need to remove the tracing configuration from them.
- (Step 5) I've got integration tracing installed, so this is where my upgrade work begins!
Scroll down for the actions I take and my end to end process.
✔ 1 (Complete) - Confirming the status of all operators in this installation
Operators should be running successfully before upgrade.
✔ (Complete) [datapower-operator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-apiconnect] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-appconnect] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-aspera-hsts-operator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-cloud-databases-redis] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-common-service-operator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-eventstreams] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-asset-repository] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-operations-dashboard] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-platform-navigator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-mq] Subscription resource in the [openshift-operators] namespace.
----------------
✔ 2 (Complete) - Confirming the status of all instances in this installation
Instances should be running successfully before upgrade.
✔ (Complete) [cp4i-tracing] OperationsDashboard resource in the [tracing-ns] namespace.
✔ (Complete) [cp4i-navigator-pn] PlatformNavigator resource in the [navigator-ns] namespace.
✔ (Complete) [cp4i-ace-dashboard] Dashboard resource in the [ace-dashboard-ns] namespace.
✔ (Complete) [cp4i-ace-designer-designer] IntegrationServer resource in the [ace-designer-ns] namespace.
✔ (Complete) [cp4i-ace-designer] DesignerAuthoring resource in the [ace-designer-ns] namespace.
✔ (Complete) [cp4i-aspera] IbmAsperaHsts resource in the [aspera-ns] namespace.
✔ (Complete) [cp4i-eventstream] EventStreams resource in the [eventstreams-ns] namespace.
✔ (Complete) [cp4i-mq] QueueManager resource in the [mq-ns] namespace.
✔ (Complete) [cp4i-assetrepo] AssetRepository resource in the [navigator-ns] namespace.
✔ (Complete) [cp4i-apic-apic] APIConnectCluster resource in the [apic-apic-ns] namespace.
✔ (Complete) [cp4i-datapower] DataPowerService resource in the [datapower-ns] namespace.
----------------
✔ 3 (Complete) - Validating the update approval strategy of all operators in this installation.
Validating that the approval strategy is set to [Automatic].
✔ (Complete) [datapower-operator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-apiconnect] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-appconnect] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-aspera-hsts-operator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-cloud-databases-redis] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-common-service-operator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-eventstreams] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-asset-repository] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-operations-dashboard] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-platform-navigator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-mq] Subscription resource in the [openshift-operators] namespace.
----------------
✔ 4 (Complete) - Removing the integration tracing configuration from instances
Integration instances are not using tracing. No action required.
✔ (Complete) Component not installed
----------------
◼ 5 (Incomplete) - Uninstalling integration tracing instances
Uninstall all integration tracing instances.
◼ (Incomplete) [cp4i-tracing] OperationsDashboard resource in the [tracing-ns] namespace.
-> (Incomplete) Uninstall this integration tracing instance.
-> (Example Command) [oc delete OperationsDashboard cp4i-tracing -n tracing-ns]
----------------
◼ 6 (Incomplete) - Uninstalling the IBM Cloud Pak for Integration Operations Dashboard operator
Uninstall the IBM Cloud Pak for Integration Operations Dashboard operator.
◼ (Incomplete) [ibm-integration-operations-dashboard] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) Uninstall the IBM Cloud Pak for Integration Operations Dashboard operator.
-> (Example Command) [oc delete subscription ibm-integration-operations-dashboard -n openshift-operators && oc delete clusterserviceversion ibm-integration-operations-dashboard.v2.6.14 -n openshift-operators]
----------------
✔ 7 (Complete) - Confirming that the catalog sources contain the required operator patches
Patch the catalog sources if they don't contain the required operator patches. The catalog sources can be patched in any order.
✔ (Complete) [datapower-operator] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-apiconnect] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-appconnect] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [aspera-hsts-operator] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-cloud-databases-redis-operator] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [opencloud-operators] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-eventstreams] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-integration-asset-repository] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-integration-platform-navigator] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-mq] CatalogSource resource in the [openshift-marketplace] namespace.
----------------
✔ 8 (Complete) - Confirming that the operators are within the required patch versions
Patch the operators with the correct patch versions to support the Cloud Pak upgrade process. Operators can be patched in any order.
✔ (Complete) [datapower-operator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-apiconnect] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-appconnect] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-aspera-hsts-operator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-eventstreams] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-asset-repository] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-platform-navigator] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-mq] Subscription resource in the [openshift-operators] namespace.
----------------
✔ 9 (Complete) - Confirming that the instances are within the required patch versions
Patch the instances with the correct patch versions to support the Cloud Pak upgrade process. Instances can be patched in any order.
✔ (Complete) [cp4i-navigator-pn] PlatformNavigator resource in the [navigator-ns] namespace.
✔ (Complete) [cp4i-ace-dashboard] Dashboard resource in the [ace-dashboard-ns] namespace.
✔ (Complete) [cp4i-ace-designer] DesignerAuthoring resource in the [ace-designer-ns] namespace.
✔ (Complete) [cp4i-aspera] IbmAsperaHsts resource in the [aspera-ns] namespace.
✔ (Complete) [cp4i-eventstream] EventStreams resource in the [eventstreams-ns] namespace.
✔ (Complete) [cp4i-mq] QueueManager resource in the [mq-ns] namespace.
✔ (Complete) [cp4i-assetrepo] AssetRepository resource in the [navigator-ns] namespace.
✔ (Complete) [cp4i-apic-apic] APIConnectCluster resource in the [apic-apic-ns] namespace.
✔ (Complete) [cp4i-datapower] DataPowerService resource in the [datapower-ns] namespace.
----------------
◼ 10 (Incomplete) - Upgrade IBM Operator for Redis
Must upgrade operators to the target version.
◼ (Incomplete) [ibm-cloud-databases-redis-operator] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) IBM Operator for Redis version [1.5.3] must be in range [>=1.6.6 <1.7.0]
----------------
✔ 11 (Complete) - Ensure other integration namespaces are up to date
No other namespaces detected with integration instances installed
✔ (Complete) No other namespaces detected with integration instances installed
----------------
◼ 12 (Incomplete) - Confirming that the catalog sources contain the required operator upgrades
Upgrade the catalog sources if they don't contain the required operator upgrades. The catalog sources can be upgraded in any order.
◼ (Incomplete) [datapower-operator] CatalogSource resource in the [openshift-marketplace] namespace.
-> (Incomplete) Update the catalog source so that it contains the required operator range [>=1.7.0 <1.8.0] for the 2023.2 operator upgrade.
◼ (Incomplete) [ibm-apiconnect] CatalogSource resource in the [openshift-marketplace] namespace.
-> (Incomplete) Update the catalog source so that it contains the required operator range [>=5.0.0 <5.1.0] for the 2023.2 operator upgrade.
◼ (Incomplete) [ibm-appconnect] CatalogSource resource in the [openshift-marketplace] namespace.
-> (Incomplete) Update the catalog source so that it contains the required operator range [>=8.2.0 <9.2.0] for the 2023.2 operator upgrade.
✔ (Complete) [aspera-hsts-operator] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-cloud-databases-redis-operator] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [opencloud-operators] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-eventstreams] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-integration-asset-repository] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-integration-platform-navigator] CatalogSource resource in the [openshift-marketplace] namespace.
✔ (Complete) [ibm-mq] CatalogSource resource in the [openshift-marketplace] namespace.
----------------
◼ 13 (Incomplete) - Confirming that the operators are within the required upgrade versions
Upgrade the operators with the correct upgrade versions. Operators can be upgraded in any order.
◼ (Incomplete) [datapower-operator and ibm-apiconnect] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) Upgrade both operators. Upgrade the [datapower-operator] operator from [1.6.9] to a version in the range of [>=1.7.0 <1.8.0], and upgrade the [ibm-apiconnect] operator from [3.4.0] to a version in the range of [>=5.0.0 <5.1.0].
-> (Example Command) [oc patch subscription datapower-operator-v1.6-datapower-operator-openshift-marketplace -n openshift-operators --patch '{"spec":{"channel":"v1.7"}}' --type=merge && oc patch subscription ibm-apiconnect -n openshift-operators --patch '{"spec":{"channel":"v5.0"}}' --type=merge]
◼ (Incomplete) [ibm-appconnect] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) Upgrade this operator from [5.0.10] to a version in the range of [>=8.2.0 <9.2.0] to upgrade to Cloud Pak for Integration 2023.2.
-> (Example Command) [oc patch subscription ibm-appconnect -n openshift-operators --patch '{"spec":{"channel":"v9.1"}}' --type=merge]
◼ (Incomplete) [ibm-aspera-hsts-operator] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) Upgrade this operator from [1.5.7] to a version in the range of [>=1.5.8 <1.6.0] to upgrade to Cloud Pak for Integration 2023.2.
-> (Example Command) [oc patch subscription aspera-hsts-operator -n openshift-operators --patch '{"spec":{"channel":"v1.5"}}' --type=merge]
✔ (Complete) [ibm-eventstreams] Subscription resource in the [openshift-operators] namespace.
✔ (Complete) [ibm-integration-asset-repository] Subscription resource in the [openshift-operators] namespace.
◼ (Incomplete) [ibm-integration-platform-navigator] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) Upgrade this operator from [6.0.13] to a version in the range of [>=7.1.0 <7.2.0] to upgrade to Cloud Pak for Integration 2023.2.
-> (Example Command) [oc patch subscription ibm-integration-platform-navigator -n openshift-operators --patch '{"spec":{"channel":"v7.1"}}' --type=merge]
◼ (Incomplete) [ibm-mq] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) Upgrade this operator from [2.0.14] to a version in the range of [>=2.4.0 <2.5.0] to upgrade to Cloud Pak for Integration 2023.2.
-> (Example Command) [oc patch subscription ibm-mq -n openshift-operators --patch '{"spec":{"channel":"v2.4"}}' --type=merge]
----------------
◼ 14 (Incomplete) - Upgrading the Platform UI instance
Must upgrade the instance to the target version.
◼ (Incomplete) [cp4i-navigator-pn] PlatformNavigator resource in the [navigator-ns] namespace.
-> (Incomplete) The Platform UI version [2022.2.1-13] must be in range [>=2023.2.1 <2023.4.1]. If the command contains [spec.license.accept] with a value of false, and you accept the license agreement, change the value to true.
----------------
◼ 15 (Incomplete) - Confirming that the instances are within the required upgrade versions
Upgrade the instances to the correct upgrade versions. Instances can be upgraded in any order.
✔ (Complete) [cp4i-ace-dashboard] Dashboard resource in the [ace-dashboard-ns] namespace.
✔ (Complete) [cp4i-ace-designer] DesignerAuthoring resource in the [ace-designer-ns] namespace.
✔ (Complete) [cp4i-aspera] IbmAsperaHsts resource in the [aspera-ns] namespace.
✔ (Complete) [cp4i-eventstream] EventStreams resource in the [eventstreams-ns] namespace.
◼ (Incomplete) [cp4i-mq] QueueManager resource in the [mq-ns] namespace.
-> (Incomplete) Upgrade this instance from [9.3.0.10-r1] to a version in the range of [>=9.3.3 <9.3.4] to upgrade to Cloud Pak for Integration 2023.2. If the command contains [spec.license.accept] with a value of false, and you accept the license agreement, change the value to true.
✔ (Complete) [cp4i-assetrepo] AssetRepository resource in the [navigator-ns] namespace.
◼ (Incomplete) [cp4i-apic-apic] APIConnectCluster resource in the [apic-apic-ns] namespace.
-> (Incomplete) Upgrade this instance from [10.0.5.4-5472] to a version in the range of [>=10.0.6.0 <10.0.7.0] to upgrade to Cloud Pak for Integration 2023.2. If the command contains [spec.license.accept] with a value of false, and you accept the license agreement, change the value to true.
◼ (Incomplete) [cp4i-datapower] DataPowerService resource in the [datapower-ns] namespace.
-> (Incomplete) Upgrade this instance from [10.5.0.7] to a version in the range of [>=10.5.1.0 <10.5.2.0] to upgrade to Cloud Pak for Integration 2023.2. If the command contains [spec.license.accept] with a value of false, and you accept the license agreement, change the value to true.
----------------
✔ 16 (Complete) - Upgrading IBM Cloud Pak foundational services
Upgrade foundational services to a supported version.
✔ (Complete) [ibm-common-service-operator] Subscription resource in the [openshift-operators] namespace.
----------------
✔ 17 (Complete) - Upgrading Red Hat OpenShift
Upgrade Red Hat OpenShift to the required version.
✔ (Complete) [current-ocp-version] resource.
----------------
◼ 18 (Incomplete) - Optional - Upgrading IBM Cloud Pak foundational services
You have the option to upgrade foundational services to the latest supported version. Complete the tasks in the generated order.
◼ (Incomplete) [ibm-common-service-operator] CatalogSource resource in the [openshift-operators] namespace.
-> (Incomplete) Update the catalog source so that it contains the latest supported version [3.23.x].
◼ (Incomplete) [ibm-common-service-operator] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) IBM Cloud Pak foundational services version [3.19.14] can be upgraded to [3.23.x].
-> (Example Command) [oc patch subscription ibm-common-service-operator-v3-opencloud-operators-openshift-marketplace -n openshift-operators --patch '{"spec":{"channel":"v3.23"}}' --type=merge]
----------------
◼ 19 (Incomplete) - Optional - Upgrading OpenShift
You have the option to upgrade OpenShift to the latest supported version.
◼ (Incomplete) [current-ocp-version] resource.
-> (Incomplete) Red Hat OpenShift version [4.10.63] can be upgraded to [4.12.x].
-> (Example Command) [oc adm upgrade]
----------------
INFO[0049] Upgrade planning is complete. Follow the checklist above in the order provided.
- Step 5 is asking me to uninstall the integration tracing instance, and it gives me the useful command to perform it in square brackets. I just copy and paste that into my command line to uninstall tracing:
oc delete OperationsDashboard cp4i-tracing -n tracing-ns
- Once that is done, I re-run the upgrade tool with the docker command to check my progress. Remember - always do this when completing each step. I see Step 5 is now complete, so I can move on to Step 6:
✔ 5 (Complete) - Uninstalling integration tracing instances
Integration tracing instances not installed. No action required.
✔ (Complete) Component not installed
----------------
◼ 6 (Incomplete) - Uninstalling the IBM Cloud Pak for Integration Operations Dashboard operator
Uninstall the IBM Cloud Pak for Integration Operations Dashboard operator.
◼ (Incomplete) [ibm-integration-operations-dashboard] Subscription resource in the [openshift-operators] namespace.
-> (Incomplete) Uninstall the IBM Cloud Pak for Integration Operations Dashboard operator.
-> (Example Command) [oc delete subscription ibm-integration-operations-dashboard -n openshift-operators && oc delete clusterserviceversion ibm-integration-operations-dashboard.v2.6.14 -n openshift-operators]
- Similarly to the previous step, I just copy and paste the example command to perform the action and uninstall the Operations Dashboard operator.
- Steps 7, 8 and 9 are already complete, as I set up this environment with the latest artefacts and 2022.2.1 patches already. You might find yourself having to do some patching and catalog source updates during these steps.
- Next is Step 10, which is to upgrade the Redis operator from 1.5.3 to a version between 1.6.6. and 1.7.0. Redis is only used by Aspera, and it currently does not have an Example command. I go into the OCP UI, open the Redis subscription, and change the channel from 1.5 to 1.6. You can also edit the channel value in the CLI.
- Once that is done, I re-run the upgrade tool with the docker command and see the catalog sources need to be upgraded so that they contain the 2023.2 operators.
- Once that is done, I re-run the upgrade tool with the docker command to check my progress. Next up is Step 13 with operator upgrades. I do get upgrade commands which I simply copy and run. For example:
oc patch subscription ibm-appconnect -n openshift-operators --patch '{"spec":{"channel":"v9.1"}}' --type=merge
- After upgrading the operators and re-running the tool, I only now get Example command for upgrading all my instances. I can copy and paste them, accept the license, and quickly perform the upgrade - starting with the Platform UI. For example:
◼ (Incomplete) [cp4i-datapower] DataPowerService resource in the [datapower-ns] namespace.
-> (Incomplete) Upgrade this instance from [10.5.0.5] to a version in the range of [>=10.5.1.0 <10.5.2.0] to upgrade to Cloud Pak for Integration 2023.2. If the command contains [spec.license.accept] with a value of false, and you accept the license agreement, change the value to true.
-> (Example Command) [oc patch DataPowerService cp4i-datapower -n datapower-ns --type='json' --patch '[{"op": "replace", "path": "/spec/version", "value": "10.5.1.0"},{"op": "replace", "path": "/spec/license/accept", "value": false},{"op": "replace", "path": "/spec/license/license", "value": "L-NWQG-8KNQE4"}]']
- Once all my instances are upgraded, my upgrade is complete! My installation is now at the 2023.2.1 level. The only 2 remaining tasks are the Optional steps 18 and 19, for upgrading foundational services and OpenShift if I want the latest features for both.
Hopefully the above guide gives a good overview of how a user can use the tool to get a guided experience for upgrading the Cloud Pak. All of the steps above took me 2 hours at most. The duration would increase if I had done OCP upgrades, but the effort time would remain roughly the same.
Think about how you use the tool to achieve an upgrade for your environments. I look forward to hearing any feedback and please do not hesitate to get in touch.