Enable xternal traffic to baremetal cluster with Cilium pfsense BGP
- Cilium can be configure to use BGP, which make metallb redundant.
- Before setting up cilium with bgp, bgp-configmap.yaml must be applied to k8s. The file content see cilium doc.
- Setup pfsense bgp (FRR).
- LB services should get ExtIPs which are announced to pfsense.
- Setup portforwarding (NAT) from pfsense to ExtIP of, e.g., ingress.
- Port forwarding to NodePort also works.
On Cloud Rootserver, where both public and private interfaces are available, private interfaces are used for BGP with pfsense LAN as GW. Policy based routing must be setup. See http://visrc.com:8000/dokuwiki/doku.php?id=linux:admin:network_routing:source_routing#config_with_netplan
admin@c1-node-01:~$ cat /etc/netplan/51-eth1.yaml
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: no
dhcp6: no
accept-ra: no
addresses: [81.94.xx.xx/28, "2a01:xxx:xxxx:xx::xx/64"]
gateway4: 81.94.xx.xx
gateway6: 2a01:xxx:xxxx:xx::x
nameservers:
addresses: [1.0.0.1]
ens6:
dhcp4: no
dhcp6: no
accept-ra: no
addresses: [195.16.xxx.111/25]
routes:
- to: 195.16.xxx.x/25
via: 195.16.xxx.gw
table: 102
- to: 0.0.0.0/0
via: 195.16.xxx.gw
table: 102
routing-policy:
- from: 195.16.xxx.111
table: 102
- to: 195.16.xxx.111
table: 102
Example
network:
version: 2
renderer: networkd
ethernets:
eth1:
dhcp4: no
dhcp6: no
accept-ra: no
addresses: [192.168.179.2/24]
routes:
- to: 192.168.179.0/24
via: 192.168.179.224
table: 102
- to: default
via: 192.168.179.224
metric: 100
table: 102
routing-policy:
- from: 192.168.179.2
table: 102
- to: 192.168.179.2
table: 102
nameservers:
addresses: [8.8.8.8]
Somehow the br_filter module disappers so make the setting persistent.
315 vim /etc/sysctl.conf 316 sysctl -p 317 modprobe br_netfilter 318 sysctl -p 319 less /etc/modules-load.d/modules.conf 320 echo br_netfilter > /etc/modules-load.d/br_netfilter.conf