-
Bug
-
Resolution: Unresolved
-
Normal
-
None
-
4.14, 4.15, 4.16, 4.17, 4.18
-
Low
-
None
-
Rejected
-
False
-
Description of problem
A commit in OpenShift 4.8 added an unsupportedConfigOverrides field to the IngressController API, based on the same field in the generic operator API.
A commit in OpenShift 4.14 revised the description of the unsupportedConfigOverrides API field in the generic operator API to be as follows:
// unsupportedConfigOverrides overrides the final configuration that was computed by the operator. // Red Hat does not support the use of this field. // Misuse of this field could lead to unexpected behavior or conflict with other configuration options. // Seek guidance from the Red Hat support before using this field. // Use of this property blocks cluster upgrades, it must be removed before upgrading your cluster.
However, cluster-ingress-operator does not block upgrades based on whether unsupportedConfigOverrides is set.
Version-Release number of selected component (if applicable)
OpenShift 4.14 and subsequent releases.
How reproducible
Readily.
Steps to Reproduce
1. Check the ingress clusteroperator status.
2. Add an unsupported config override on the default ingresscontroller.
3. Check the ingress clusteroperator status again.
4. Remove the unsupported config override on the default ingresscontroller.
5. Check the ingress clusteroperator status again.
Actual results
The ingress clusteroperator reports Upgradeable=True even when unsupportedConfigOverrides is set:
% oc get clusteroperators/ingress -o 'jsonpath={.status.conditions[?(@.type=="Upgradeable")]}{"\n"}' {"lastTransitionTime":"2024-09-06T16:32:42Z","reason":"IngressControllersUpgradeable","status":"True","type":"Upgradeable"} % oc -n openshift-ingress-operator patch ingresscontrollers/default --type=merge --patch='{"spec":{"unsupportedConfigOverrides":{"foo":"bar"}}}' ingresscontroller.operator.openshift.io/default patched % oc get clusteroperators/ingress -o 'jsonpath={.status.conditions[?(@.type=="Upgradeable")]}{"\n"}' {"lastTransitionTime":"2024-09-06T16:32:42Z","reason":"IngressControllersUpgradeable","status":"True","type":"Upgradeable"} % oc -n openshift-ingress-operator patch ingresscontrollers/default --type=merge --patch='{"spec":{"unsupportedConfigOverrides":null}}' ingresscontroller.operator.openshift.io/default patched % oc get clusteroperators/ingress -o 'jsonpath={.status.conditions[?(@.type=="Upgradeable")]}{"\n"}' {"lastTransitionTime":"2024-09-06T16:32:42Z","reason":"IngressControllersUpgradeable","status":"True","type":"Upgradeable"} %
Expected results
After Step 3, the ingress clusteroperator should report Upgradeable=False. It should nevertheless report Upgradeable=True for Steps 1 and 5.
Additional info
We should also consider borrowing godoc from the generic unsupportedConfigOverrides field to improve our messaging that this is really, truly unsupported.