Ingress Node Firewall Operator version 4.18 is incorrectly installed on OpenShift 4.17 or older clusters
Environment
- Red Hat OpenShift Container Platform (RHOCP)
- < 4.18
- Ingress Node Firewall Operator 4.18
Issue
After a catalog update, the Ingress Node Firewall Operator may have been upgraded to version 4.18, which is not supported on OpenShift Container Platform (OCP) versions 4.17 or older clusters.
This article covers the specific remediation for the Ingress Node Firewall Operator. For the general issue affecting multiple operators, refer to Red Hat Operator has version higher than the cluster version.
Check if the Ingress Node Firewall Operator is upgraded (4.18)
To find the ClusterServiceVersion (CSV), Subscription and InstallPlan of the ingress-node-firewall with the 4.18 version, the following command should be used in the openshift-ingress-node-firewall namespace:
$ oc get csv,sub,installplan -n openshift-ingress-node-firewall
NAME DISPLAY VERSION REPLACES PHASE
clusterserviceversion.operators.coreos.com/ingress-node-firewall.v4.18.0-202601302238 Ingress Node Firewall Operator 4.18.0-202601302238 ingress-node-firewall.v4.17.0-202602090843 Succeeded
NAME PACKAGE SOURCE CHANNEL
subscription.operators.coreos.com/ingress-node-firewall ingress-node-firewall redhat-operators stable
NAME CSV APPROVAL APPROVED
installplan.operators.coreos.com/install-8lmds ingress-node-firewall.v4.18.0-202601302238 Automatic true
installplan.operators.coreos.com/install-pqlwh ingress-node-firewall.v4.17.0-202602090843 Automatic true
The version of the operator is listed under the VERSION column of the CSV. If the operator version is the same as the version of the current OpenShift cluster, the operator was not upgraded and no further steps are needed. If the version of the CSV is 4.18.*, then the downgrade process needs to be followed.
If a IngressNodeFirewallConfig object is created then the ingress-node-firewall daemon pods will be running in the openshift-ingress-node-firewall namespace along with the ingress node firewall operator (controller-manager) pod.
$ oc -n openshift-ingress-node-firewall get ingressnodefirewallconfig
NAME AGE
ingressnodefirewallconfig 32s
$ oc -n openshift-ingress-node-firewall get pods
NAME READY STATUS RESTARTS AGE
ingress-node-firewall-controller-manager-6b6f89dfdf-qxqs5 2/2 Running 0 5m52s
ingress-node-firewall-daemon-5dfsf 3/3 Running 0 69s
ingress-node-firewall-daemon-l4jvk 3/3 Running 0 69s
ingress-node-firewall-daemon-s5mkh 3/3 Running 0 69s
Resolution
Steps to downgrade the Ingress Node Firewall Operator to the supported version
CAUTION: This procedure involves removal and then addition of resources:
- When the 4.18 CSV is removed from the cluster, any resources owned by the CSV will be deleted, including the ingress-node-firewall-controller-manager Deployment, ServiceAccounts, Roles, and RoleBindings. The ingress-node-firewall-daemon DaemonSet and its corresponding pods will remain running, along with any IngressNodeFirewall objects that were created.
- After recreating the original version subscription, all resources (ingress-node-firewall-controller-manager Deployment, Secrets, Roles, RoleBindings, and the ingress-node-firewall-daemon DaemonSet) will be recreated. This recreation will bring all components back into a working state, including the ingress-node-firewall-controller-manager and the ingress-node-firewall-daemon pods.
- After the completion of the process, if the IngressNodeFirewall rules do not work correctly, then the IngressNodeFirewall and IngressNodeFirewallConfig objects should be recreated to fix the issue. Thus, it is important to backup IngressNodeFirewall and IngressNodeFirewallConfig objects before starting the downgrade process.
First the IngressNodeFirewall and IngressNodeFirewallConfig objects should be backed up. The following commands can be used for the backup:
$ oc -n openshift-ingress-node-firewall get ingressnodefirewall -oyaml > ingressnodefirewall.yaml
$ oc -n openshift-ingress-node-firewall get ingressnodefirewallconfig -oyaml > ingressnodefirewallconfig.yaml
For downgrading the operator to the same version of the OpenShift cluster, the ClusterServiceVersion (CSV) and Subscription corresponding to the Ingress Node Firewall Operator should be deleted first. For the above example, the CSV_NAME is ingress-node-firewall.v4.18.0-202601302238. The CSV can be deleted using the following command:
$ oc -n openshift-ingress-node-firewall delete csv <CSV_NAME>
clusterserviceversion.operators.coreos.com "<CSV_NAME>" deleted
Next the operator subscription should be deleted the using command:
$ oc -n openshift-ingress-node-firewall delete subscription ingress-node-firewall
subscription.operators.coreos.com "ingress-node-firewall" deleted
The ingress-node-firewall-controller-manager pod will be deleted but the ingress-node-firewall-daemon pods will be still running.
$ oc -n openshift-ingress-node-firewall get pods
NAME READY STATUS RESTARTS AGE
ingress-node-firewall-daemon-8dl7w 3/3 Running 0 14m
ingress-node-firewall-daemon-s2s7g 3/3 Running 0 14m
ingress-node-firewall-daemon-zz975 3/3 Running 0 14m
Next to install the operator of the correct version, the corresponding subscription should be created. It is recommended that the installPlanApproval of the subscription be set to Manual mode. Following command can be used to create the subscription:
$ oc apply -f - <<EOF
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: ingress-node-firewall
namespace: openshift-ingress-node-firewall
spec:
channel: stable
installPlanApproval: Manual
name: ingress-node-firewall
source: redhat-operators
sourceNamespace: openshift-marketplace
EOF
subscription.operators.coreos.com/ingress-node-firewall created
Since the installPlannApproval is set to Manual, it needs to be approved manually.
First the current installPlan name should be fetched:
$ oc get installplan -n openshift-ingress-node-firewall
NAME CSV APPROVAL APPROVED
<INSTALL_PLAN> ingress-node-firewall.v<VERSION> Manual false
Then, the fetched INSTALL_PLAN name should be used to approve the InstallPlan by patching it:
$ oc patch installplan -n openshift-ingress-node-firewall <INSTALL_PLAN> --patch '{"spec":{"approved":true}}' --type=merge
installplan.operators.coreos.com/<INSTALL_PLAN> patched
The approval status of the InstallPlan should now show as true:
$ oc get installplan -n openshift-ingress-node-firewall
NAME CSV APPROVAL APPROVED
<INSTALL_PLAN> ingress-node-firewall.v<VERSION> Manual true
Testing the new subscription is working
The newly created CSV should have the VERSION same as the version of the cluster, i.e. if the OpenShift cluster is 4.17, then the CSV version should also be 4.17.*. To check this the following command can be used:
$ oc -n openshift-ingress-node-firewall get csv
NAME DISPLAY VERSION REPLACES PHASE
ingress-node-firewall.v4.17.0-202602090843 Ingress Node Firewall Operator 4.17.0-202602090843 Succeeded
The ingress-node-firewall-controller-manager pod also will be deployed and running:
$ oc -n openshift-ingress-node-firewall get pods
NAME READY STATUS RESTARTS AGE
ingress-node-firewall-controller-manager-6998965745-p7mvd 2/2 Running 0 98s
ingress-node-firewall-daemon-2rrh2 3/3 Running 0 79s
ingress-node-firewall-daemon-gqlbh 3/3 Running 0 78s
ingress-node-firewall-daemon-mk2tf 3/3 Running 0 81s
Note: Post the installation of the operator of the correct version, it should be tested to check whether the IngressNodeFirewall rules are correctly applied or not. If the rules are not working as expected, then the IngressNodeFirewall objects should be deleted first. Once those are deleted then the IngressNodeFirewallConfig should also be deleted which in turn will remove the ingress-node-firewall-daemon pods. Then the objects should again be recreated from the backup that was taken before the start of the downgrade process, first the IngressNodeFirewallConfig object and then the IngressNodeFirewall objects.
Root Cause
For several hours on February 3, 2026, Red Hat released 4.18 Red Hat Operators catalog content into 4.12-4.17 clusters.
For more information, including Diagnostic Steps, please refer to Red Hat Operator has version higher than the cluster version.
Diagnostic Steps
For more information, including Diagnostic Steps, please refer to Red Hat Operator has version higher than the cluster version.
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.