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

IPv6 ingress VIP not configured in keepalived on vSphere Dual-stack

XMLWordPrintable

    • Important
    • Yes
    • Rejected
    • False
    • Hide

      None

      Show
      None
    • N/A
    • Release Note Not Required
    • Done

      Description of problem:

      Regression of OCPBUGS-12739

      level=warning msg="Couldn't unmarshall OVN annotations: ''. Skipping." err="unexpected end of JSON input"
          

      Upstream OVN changed the node annotation from "k8s.ovn.org/host-addresses" to "k8s.ovn.org/host-cidrs" in OpenShift 4.14

      https://github.com/ovn-org/ovn-kubernetes/pull/3915

      We might need to fix baremetal-runtimecfg

      diff --git a/pkg/config/node.go b/pkg/config/node.go
      index 491dd4f..078ad77 100644
      --- a/pkg/config/node.go
      +++ b/pkg/config/node.go
      @@ -367,10 +367,10 @@ func getNodeIpForRequestedIpStack(node v1.Node, filterIps []string, machineNetwo
                      log.Debugf("For node %s can't find address using NodeInternalIP. Fallback to OVN annotation.", node.Name)
       
                      var ovnHostAddresses []string
      -               if err := json.Unmarshal([]byte(node.Annotations["k8s.ovn.org/host-addresses"]), &ovnHostAddresses); err != nil {
      +               if err := json.Unmarshal([]byte(node.Annotations["k8s.ovn.org/host-cidrs"]), &ovnHostAddresses); err != nil {
                              log.WithFields(logrus.Fields{
                                      "err": err,
      -                       }).Warnf("Couldn't unmarshall OVN annotations: '%s'. Skipping.", node.Annotations["k8s.ovn.org/host-addresses"])
      +                       }).Warnf("Couldn't unmarshall OVN annotations: '%s'. Skipping.", node.Annotations["k8s.ovn.org/host-cidrs"])
                      }
       
      

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

      4.16.0-0.nightly-2024-05-30-130713
       

      How reproducible:

      Frequent

      Steps to Reproduce:

          1. Deploy vsphere IPv4 cluster
          2. Convert to Dualstack IPv4/IPv6
          3. Add machine network and IPv6 apiServerInternalIPs and ingressIPs
          4. Check keepalived.conf
      for f in $(oc get pods -n openshift-vsphere-infra -l app=vsphere-infra-vrrp --no-headers -o custom-columns=N:.metadata.name  ) ; do oc -n openshift-vsphere-infra exec -c keepalived $f -- cat /etc/keepalived/keepalived.conf | tee $f-keepalived.conf ; done
          

      Actual results:

      IPv6 VIP is not in keepalived.conf

      Expected results:
      Something like:

      vrrp_instance rbrattai_INGRESS_1 {
          state BACKUP
          interface br-ex
          virtual_router_id 129
          priority 20
          advert_int 1
      
          unicast_src_ip fd65:a1a8:60ad:271c::cc
          unicast_peer {
              fd65:a1a8:60ad:271c:9af:16a9:cb4f:d75c
              fd65:a1a8:60ad:271c:86ec:8104:1bc2:ab12
              fd65:a1a8:60ad:271c:5f93:c9cf:95f:9a6d
              fd65:a1a8:60ad:271c:bb4:de9e:6d58:89e7
              fd65:a1a8:60ad:271c:3072:2921:890:9263
          }
      ...
          virtual_ipaddress {
              fd65:a1a8:60ad:271c::1117/128
          }
      ...
      }
          

            mkowalsk@redhat.com Mat Kowalski
            rbrattai@redhat.com Ross Brattain
            Ross Brattain Ross Brattain
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: