Red Hat Operator has version higher than the cluster version with the Kiali Operator

Solution Verified - Updated

Environment

  • Red Hat OpenShift Container Platform (RHOCP)
    • 4.17 and earlier
    • Kiali Operator
  • Red Hat OpenShift on AWS (ROSA)
    • 4.17 and earlier
    • Kiali Operator
  • OpenShift Dedicated (OSD)
    • 4.17 and earlier
    • Kiali Operator
  • Azure Red Hat OpenShift (ARO)
    • 4.17 and earlier
    • Kiali Operator

Issue

  • On 2026-02-03 a push to the catalogs of older OpenShift releases (v4.12 - v4.17) resulted in potentially incompatible packages being released for the Kiali Operator.

Related to Red Hat Operator has version higher than the cluster version. Please refer to that article for more information.

Resolution

The recommended solution is to downgrade the Kiali Operator for any installation that encountered this failure.

Downgrading the Kiali Operator

This document describes how to downgrade the Kiali Operator to an older version in OpenShift using the Operator Lifecycle Manager (OLM).

Overview

The downgrade process involves:

  1. Backing up and removing existing Kiali CRs
  2. Uninstalling the current Kiali Operator
  3. Cleanup and Verify
  4. Installing the older version of the Kiali Operator
  5. Restoring the Kiali CRs

Prerequisites

  • OpenShift cluster with administrative access
  • oc CLI tool configured and authenticated
  • Existing Kiali Operator installation via OLM

Step 1: Backup and Remove Kiali CRs

Important Tip: Before deleting any Kiali CRs, save them to local YAML files so you can restore them after the operator downgrade. See step 1.2 below.

1.1 List all Kiali CRs in the cluster
oc get kialis -A
1.2 Backup each Kiali CR to a local file

For each Kiali CR found, export it to a clean YAML file that can be reapplied; e.g.:

# Replace the second 'kiali' argument with the actual
# CR name and 'istio-system' with the actual namespace
oc get kiali kiali -n istio-system -o yaml | \
  yq eval 'del(.metadata.creationTimestamp, .metadata.generation, .metadata.resourceVersion, .metadata.uid, .metadata.finalizers, .metadata.annotations."kubectl.kubernetes.io/last-applied-configuration", .status)' - \
kiali-cr-backup.yaml

Note: This command removes server-generated metadata and status fields that would prevent the backup from being reapplied successfully. If you do not have yq, the above command won't work and you will need to manually export the full yaml and remove that data from the yaml file manually.

1.3 Remove all Kiali CRs

Delete each Kiali CR; e.g.:

# Replace with actual CR name and namespace
oc delete kiali kiali -n istio-system

Note: Wait for all Kiali CRs to be completely removed before proceeding.

Step 2: Uninstall the Current Kiali Operator

This step can be performed via the OpenShift console UI if preferred. The below instructions demonstrate the process via the oc CLI. Though, if the UI is used, some steps still require the use of the CLI. Please see Step 3 for an example.

2.1 Remove the Operator Subscription

First, find the specific subscription name:

oc get subscription -n openshift-operators | grep kiali

Then delete it (using the returned subscription name from the above step):

oc delete subscription kiali-ossm-subscription -n openshift-operators
2.2 Remove the ClusterServiceVersion (CSV)

Find and delete the current CSV:

# Find the current CSV
oc get csv -n openshift-operators | grep kiali

# Delete it (replace with the actual CSV name)
oc delete csv kiali-operator.v2.17.3 -n openshift-operators

Step 3: Cleanup and Verify

Note: The below steps must be performed via the CLI even if you used the OpenShift console UI to uninstall the operator in Step 2.

3.1 Remove the CRDs

Remove the Kiali and OSSMConsole CRDs:

oc delete crd kialis.kiali.io
oc delete crd ossmconsoles.kiali.io
3.2 Verify operator removal

Ensure the operator pod is removed:

oc get pods -n openshift-operators | grep kiali

Step 4: Install the Older Kiali Operator Version

4.1 Create the new Subscription for the target version

Create the subscription for the older operator version:

oc apply -f - << 'EOF'
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: kiali-ossm-subscription
  namespace: openshift-operators
spec:
  channel: stable
  name: kiali-ossm
  source: redhat-operators
  sourceNamespace: openshift-marketplace
EOF
4.2 Approve the InstallPlan

Find and approve the pending InstallPlan:

# Find the pending InstallPlan
oc get installplan -n openshift-operators | grep kiali

# Approve it (replace with actual install plan name)
oc patch installplan install-xxxxx -n openshift-operators --type merge --patch '{"spec":{"approved":true}}'
4.3 Verify the downgraded operator installation

Wait for the installation to complete, then verify:

# Check the CSV version
oc get csv -n openshift-operators | grep kiali

# Check the operator pod is running
oc get pods -n openshift-operators | grep kiali

Step 5: Restore Kiali CRs

5.1 Apply the backed-up Kiali CRs

Apply each yaml backup file to re-create the Kiali CRs; e.g.:

oc apply -f kiali-cr-backup.yaml
5.2 Verify Kiali deployment

Check that Kiali is deployed with the older operator:

# Check Kiali pods in the namespaces you expect them to be
oc get pods -n istio-system | grep kiali

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.