metallb frr-k8s 功能

478 阅读1分钟

metallb frr-k8s 调研

参考文档

github.com/metallb/frr…

框架图

image.png

部署 k8s-frr 模式后,相当于把原先存在于speaker中的 frr 单独剥离出来,放到 frr daemon中,speaker 只管将 bgp 相关的 yaml (bgpadv, bgppeer…)转换成 frrconfiguration 的yaml,然后由frr daemon读取frrconfiguration的yaml 去配置 frr。

并且还有好处可以直接配置raw frrconfiguration 配置 frr,不依赖于metallb speaker的转换了。看起来做这个功能卖点也在着,可能用户可以开发些自定义的组件去配置frrconfiguration,去自定义 frr 中的配置。

社区版本安装

metallb + frr-k8s 安装

values.yaml 文件获取命令

wget https://raw.githubusercontent.com/metallb/metallb/v0.14.5/charts/metallb/values.yaml 

speaker:
  frr:
    enabled: false
  frrk8s:
    enabled: true

修改上面两个字段在apply

helm repo add metallb https://metallb.github.io/metallb
helm install metallb metallb/metallb -f values.yaml

安装完成
image.png metallb-frr-k8s 即为 frr配置转换的那个daemon

如果单独安装 frr-k8s

kubectl apply -f https://raw.githubusercontent.com/metallb/frr-k8s/v0.0.11/config/all-in-one/frr-k8s.yaml 

metallb-operator安装另参考

metallb.universe.tf/installatio…

FRR-k8s 用例yaml

apiVersion: metallb.io/v1beta1
kind: BGPAdvertisement
metadata:
  name: example
spec:
  ipAddressPools:
  - first-pool
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: first-pool
spec:
  addresses:
  - 192.168.129.208/32
---
apiVersion: metallb.io/v1beta2
kind: BGPPeer
metadata:
  name: test
spec:
  myASN: 64501
  peerASN: 64500
  peerAddress: 192.168.176.41

配置后可以看到frr-configuration自动生成,
image_8.png 详情yaml查看:
image_e.png

frr 配置文件路径

kubectl exec -it metallb-frr-k8s-sp7m7 -- cat /etc/frr_reloader/frr.conf

image_u.png

frr-k8s的热度

看issue 和 pr ,频率都比较低
pr 的频率
image_n.png issue 的 频率也比较低,从2024开始才提了20个左右。

我提了个issue给社区
github.com/metallb/met…