Skip to content

Cilium OVN Interface ​

Problem ​

Cilium is the CNI for the OpenStack cluster, but it only knows about eno1.4000 for pod routing. OVN manages its own integration bridge (br-int) for OpenStack VM networking. Without Cilium being aware of the OVN bridge, Kubernetes pods cannot communicate with OpenStack VMs — traffic to VMs is dropped because Cilium's eBPF datapath doesn't know how to route to the OVN bridge.

The cni.exclusive: false setting allows OVN and Cilium to coexist, but the routing gap remains.

Solution ​

Add the OVN-managed interface to Cilium's device list so its eBPF datapath can route traffic through br-int to reach VMs.

From argus/clusters/openstack/cilium.yaml, the Cilium HelmRelease currently patches extraArgs with only the VLAN interface:

yaml
extraArgs:
  - --devices=eno1.4000
  - --direct-routing-device=eno1.4000

br-int needs to be added to the --devices list:

yaml
extraArgs:
  - --devices=eno1.4000
  - --direct-routing-device=eno1.4000
  - --devices=br-int

This tells Cilium to also listen on br-int, enabling pod-to-VM traffic through OVN's integration bridge.

Why It Matters ​

Without this, pods running on the OpenStack cluster (e.g., OpenStack API services) can't reach VMs managed by Nova/OVN. The two networking planes — Cilium (Kubernetes) and OVN (OpenStack) — operate independently on separate bridges. Adding br-int to Cilium's device list bridges this gap.

References ​

  • Cilium socketLB — why hostNamespaceOnly: true is also needed on this cluster
  • OVN Bridge — how br-ex with enp3s0 uplink is configured for external VM access

Open source infrastructure documentation