Operand Upgrades

The DataPower Operator supports both manual and automatic upgrades of the IBM DataPower Pods it manages via the StatefulSet.

Upgrade Strategy

The DataPower pods are managed by a StatefulSet, which is managed by the DataPower Operator. When any change is made to the DataPowerService Custom Resource (CR), the StatefulSet performs a rolling update to serialize the change across the pods. This same strategy is used to perform an upgrade, as the specified version of the DataPower operand is simply a property in the DataPowerService spec.

Specifying a Version

One of the required fields of the DataPowerService spec is version. This property will determine which version the operator reconciles, unless a custom image is provided via the image property.

If a custom image is provided, the exact version must also be specified to inform the operator of what base image version is being used.

Manual Upgrades

To manually schedule the upgrade, an existing DataPowerService CR can be modified to specify a new version.

For example, let's assume 10.0.0.0 was the currently specified version, and 10.0.0.1 was available. To apply the CR change:

oc patch dp <name> -p '{"spec":{"version":"10.0.0.1"}}' --type=merge

This change could also be applied via oc edit or by oc apply with the appropriate YAML.

Automatic Upgrades

The DataPower Operator supports automatically upgrading the DataPower pods when new versions are available. To subscribe to an upgrade channel, specify an available channel name as the version in the DataPowerService CR spec. For example:

apiVersion: datapower.ibm.com/v1beta3
kind: DataPowerService
metadata:
  name: example
spec:
  version: 10.0-lts

In the above example, the DataPower Operator will automatically apply the latest version when the CR is created. When a new version becomes available within that channel (i.e. 10.0.1.x), the operator will automatically reconcile the new version, using the same Upgrade Strategy as above (rolling update).

Accepting the license on upgrade

As of version 1.3.0 (and the v1beta3 API), the spec.license.license field must be updated for the automatic upgrade to complete. See licenses for more details.

Checking the Reconciled Version

The reconciled version of the DataPowerService will always represent the current version being used by the StatefulSet. If a channel is supplied in the version field, the reconciled version will reflect the chosen latest version within that channel. If a custom image is provided, the reconciled version will reflect the version specified in the version property, which is expected to match that of the image.

The reconciled version is available in the DataPowerService status at status.versions.reconciled. More on this topic here.