社ではない某おうちKubernetesクラスターでMetal LBを使っているんだけど、0.12.x以前でロードバランサーを浮かべる場合、L2モードで以下のようなConfigMapを書いていた。
apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.8.128-192.168.8.255
以下の通り、0.13.2からはCRDによる構成設定が可能になったため、ConfigMapが使えなくなった。
ただしメリットもあって、MetalLB自体のバージョン管理がKustomzieネイティブで便利になった(これまではraw githubから取ってきていたのでrennovateに載せられなかった)。
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: metallb-system resources: - github.com/metallb/metallb/config/native?ref=v0.13.7
設定方法はドキュメントに書いてあって、
IPAddressPool
から来る IP を広報するために、L2Advertisement
インスタンスをIPAddressPool
に関連付ける必要があります。L2Advertisement
インスタンスにIPAddressPool
セレクタを設定しない場合、そのインスタンスは利用可能なすべてのIPAddressPool
に関連付けられると解釈されます。したがって、特殊なIPAddressPools
があり、そのうちのいくつかだけを L2 経由で広報する必要がある場合、IP を広報したいIPAddressPools
のリストを宣言する必要があります(代替手段として、ラベルセレクタを使用することが可能です)。
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: default-pool namespace: metallb-system spec: addresses: - 192.168.8.128-192.168.8.255 --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: default-advertisement namespace: metallb-system # spec: # ipAddressPools: # - default-pool
とかなんとかやればいけるっぽい。