Uploaded image for project: 'OpenShift Bugs'
  1. OpenShift Bugs
  2. OCPBUGS-41366

unsupportedConfigOverrides should block upgrades

XMLWordPrintable

    • Low
    • None
    • Rejected
    • False
    • Hide

      None

      Show
      None

      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.

              rfredett@redhat.com Ryan Fredette
              mmasters1@redhat.com Miciah Masters
              Ishmam Amin Ishmam Amin
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: