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

[Backport 4.17] the "classicLoadBalancer" is still in ingresscontroller status after changing LB type from CLB to NLB

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done-Errata
    • Icon: Normal Normal
    • None
    • 4.17.0
    • Networking / router
    • Moderate
    • No
    • 1
    • NE Sprint 258
    • 1
    • Rejected
    • False
    • Hide

      None

      Show
      None
    • Hide
      * Previously, when you switched your cluster to use a different load balancer, the Ingress Operator did not remove the values from the `classicLoadBalancer` and `networkLoadBalancer` parameters in the `IngressController` custom resource (CR) status. This situation caused the status of the CR to report wrong information from the `classicLoadBalancer` and `networkLoadBalancer` parameters. With this release, after you switch your cluster to use a different load balancer, the Ingress Operator removes values from these parameters so that the CR reports a more accurate and less confusing message status. (link:https://issues.redhat.com/browse/OCPBUGS-38646[*OCPBUGS-38646*])
      Show
      * Previously, when you switched your cluster to use a different load balancer, the Ingress Operator did not remove the values from the `classicLoadBalancer` and `networkLoadBalancer` parameters in the `IngressController` custom resource (CR) status. This situation caused the status of the CR to report wrong information from the `classicLoadBalancer` and `networkLoadBalancer` parameters. With this release, after you switch your cluster to use a different load balancer, the Ingress Operator removes values from these parameters so that the CR reports a more accurate and less confusing message status. (link: https://issues.redhat.com/browse/OCPBUGS-38646 [* OCPBUGS-38646 *])
    • Bug Fix
    • Done

      This is a clone of issue OCPBUGS-38217. The following is the description of the original issue:

      Description of problem:

          After changing LB type from CLB to NLB, the "status.endpointPublishingStrategy.loadBalancer.providerParameters.aws.classicLoadBalancer" is still there, but if create new NLB ingresscontroller the "classicLoadBalancer" will not appear.
      
      // after changing default ingresscontroller to NLB
      $ oc -n openshift-ingress-operator get ingresscontroller/default -oyaml | yq .status.endpointPublishingStrategy.loadBalancer.providerParameters.aws
      classicLoadBalancer:                   <<<< 
        connectionIdleTimeout: 0s            <<<<
      networkLoadBalancer: {}
      type: NLB
      
      // create new ingresscontroller with NLB
      $ oc -n openshift-ingress-operator get ingresscontroller/nlb -oyaml | yq .status.endpointPublishingStrategy.loadBalancer.providerParameters.aws
      networkLoadBalancer: {}
      type: NLB
      
      
      
      

      Version-Release number of selected component (if applicable):

          4.17.0-0.nightly-2024-08-08-013133

      How reproducible:

          100%

      Steps to Reproduce:

          1. changing default ingresscontroller to NLB
      $ oc -n openshift-ingress-operator patch ingresscontroller/default --type=merge --patch='{"spec":{"endpointPublishingStrategy":{"type":"LoadBalancerService","loadBalancer":{"providerParameters":{"type":"AWS","aws":{"type":"NLB"}},"scope":"External"}}}}'
      
          2. create new ingresscontroller with NLB
      kind: IngressController
      apiVersion: operator.openshift.io/v1
      metadata:
        name: nlb
        namespace: openshift-ingress-operator
      spec:
        domain: nlb.<base-domain>
        replicas: 1
        endpointPublishingStrategy:
          loadBalancer:
            providerParameters:
              aws:
                type: NLB
              type: AWS
            scope: External
          type: LoadBalancerService
      
          3. check both ingresscontrollers status
          

      Actual results:

      // after changing default ingresscontroller to NLB 
      $ oc -n openshift-ingress-operator get ingresscontroller/default -oyaml | yq .status.endpointPublishingStrategy.loadBalancer.providerParameters.aws
      classicLoadBalancer:
        connectionIdleTimeout: 0s
      networkLoadBalancer: {}
      type: NLB
       
      // new ingresscontroller with NLB
      $ oc -n openshift-ingress-operator get ingresscontroller/nlb -oyaml | yq .status.endpointPublishingStrategy.loadBalancer.providerParameters.aws
      networkLoadBalancer: {}
      type: NLB
       

      Expected results:

          If type=NLB, then "classicLoadBalancer" should not appear in the status. and the status part should keep consistent whatever changing ingresscontroller to NLB or creating new one with NLB. 

      Additional info:

          

            gspence@redhat.com Grant Spence
            openshift-crt-jira-prow OpenShift Prow Bot
            Hongan Li Hongan Li
            Darragh Fitzmaurice Darragh Fitzmaurice
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: