Uploaded image for project: 'Network Edge'
  1. Network Edge
  2. NE-2132

Add support for internal load-balancers for gateways

XMLWordPrintable

    • Icon: Epic Epic
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 4.19.z, 4.20
    • Add support for internal load-balancers for gateways
    • Quality / Stability / Reliability
    • OCPSTRAT-1798Gateway API using Istio for Cluster Ingress - Post GA tasks
    • 100% To Do, 0% In Progress, 0% Done
    • False
    • Hide

      None

      Show
      None
    • False
    • Not Selected
    • None
    • None
    • Rejected

      Description of problem:

          When creating gateway on AWS/Azure/GCP private cluster, the istio always creates External LB for the gateway. 
      
      In AWS private cluster, the external LB stuck in pending status and report error:
      
      Error syncing load balancer: failed to ensure load balancer: could not find any suitable subnets for creating the ELB
       
      In Azure/GCP private cluster, the gateway LB is provisioned but External-IP is unexpected, see example output below:
      
      // Azure
      $ oc -n openshift-ingress get svc
      NAME                       TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)                                 AGE
      gwapi-openshift-default    LoadBalancer   172.30.109.231   172.184.198.232   15021:31954/TCP,80:30486/TCP            40m
      router-default             LoadBalancer   172.30.51.75     10.0.1.4          80:31985/TCP,443:31807/TCP              6h41m
      
      // GCP
      $ oc -n openshift-ingress get svc
      NAME                       TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                 AGE
      gwapi-openshift-default    LoadBalancer   172.30.170.190   34.72.156.124   15021:30089/TCP,80:31901/TCP            23m
      router-default             LoadBalancer   172.30.39.227    10.0.128.2      80:32375/TCP,443:31575/TCP              7h17m
      
      

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

          4.19/4.20

      How reproducible:

          100%

      Steps to Reproduce:

          1. setup AWS/Azure/GCP private cluster
          2. create gatewayclass
          3. create gateway
          

      Actual results:

      gateway LB svc stuck in pending
      
      $ oc get gatewayclass
      NAME                CONTROLLER                           ACCEPTED   AGE
      openshift-default   openshift.io/gateway-controller/v1   True       13m
      
      $ oc -n openshift-ingress get gateway
      NAME        CLASS               ADDRESS   PROGRAMMED   AGE
      mygateway   openshift-default             False        11m
      
      $ oc -n openshift-ingress get svc
      NAME                          TYPE           CLUSTER-IP      EXTERNAL-IP                                                                            PORT(S)                                 AGE
      istiod-openshift-gateway      ClusterIP      172.30.161.38   <none>                                                                                 15010/TCP,15012/TCP,443/TCP,15014/TCP   13m
      mygateway-openshift-default   LoadBalancer   172.30.46.124   <pending>                                                                              15021:32018/TCP,80:31093/TCP            11m
      router-default                LoadBalancer   172.30.246.32   internal-abc01c3b2acf94290a737ac93d8be680-223623347.ap-northeast-1.elb.amazonaws.com   80:30804/TCP,443:30529/TCP              58m
      router-internal-default       ClusterIP      172.30.39.26    <none>                                                                                 80/TCP,443/TCP,1936/TCP                 58m
       

      Expected results:

          gateway should support to create internal LB in private cluster

      Additional info:

          workaround: adding the annotation to LB service manually
      
      $ oc -n openshift-ingress annotate svc mygateway-openshift-default service.beta.kubernetes.io/aws-load-balancer-internal="true" 
      service/mygateway-openshift-default annotated
      
      $ oc -n openshift-ingress get svc 
      NAME                          TYPE           CLUSTER-IP      EXTERNAL-IP                                                                             PORT(S)                                 AGE
      istiod-openshift-gateway      ClusterIP      172.30.161.38   <none>                                                                                  15010/TCP,15012/TCP,443/TCP,15014/TCP   31m
      mygateway-openshift-default   LoadBalancer   172.30.123.93   internal-aac85592640ba46ca804c0e60324ce43-1864538304.ap-northeast-1.elb.amazonaws.com   15021:30754/TCP,80:30766/TCP            2m38s
      router-default                LoadBalancer   172.30.246.32   internal-abc01c3b2acf94290a737ac93d8be680-223623347.ap-northeast-1.elb.amazonaws.com    80:30804/TCP,443:30529/TCP              76m
      router-internal-default       ClusterIP      172.30.39.26    <none>                                                                                  80/TCP,443/TCP,1936/TCP                 76m
      
      $ oc -n openshift-ingress get gateway
      NAME        CLASS               ADDRESS                                                                                 PROGRAMMED   AGE
      mygateway   openshift-default   internal-aac85592640ba46ca804c0e60324ce43-1864538304.ap-northeast-1.elb.amazonaws.com   True         30m
      

      Slack thread: https://redhat-internal.slack.com/archives/CBWMXQJKD/p1749719908434459.

              rh-ee-rpchevuz Ricardo Pchevuzinske Katz
              rhn-support-hongli Hongan Li
              None
              Ishmam Amin Ishmam Amin
              None
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

                Created:
                Updated: