# a general pool for everything but mqtt and public IP facing ingress controller apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: default-pool namespace: metallb-system spec: addresses: # exclude 10.0.64.5, its in nfs-pool - 10.0.64.6/32 # exclude 10.0.64.7, its in dmz-pool # exclude 10.0.64.8, its in mqtt-pool # exclude 10.0.64.9, its in public-ports-pool - 10.0.64.10-10.0.64.19 autoAssign: true serviceAllocation: serviceSelectors: - matchLabels: loadBalancerPool: default --- # NFS ip apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: nfs-pool namespace: metallb-system spec: addresses: - 10.0.64.5/32 autoAssign: true serviceAllocation: serviceSelectors: - matchLabels: loadBalancerPool: nfs --- # DMZ (not really, just for clarity) ip, will have ports forwarded from WAN router apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: dmz-pool namespace: metallb-system spec: addresses: - 10.0.64.7/32 autoAssign: true serviceAllocation: serviceSelectors: - matchLabels: loadBalancerPool: dmz --- # reserve 10.0.64.8 (for historical reasons) for mqtt # ! do not forget to label the mqtt service with "loadBalancerPool: mqtt" ! apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: mqtt-pool namespace: metallb-system spec: addresses: - 10.0.64.8/32 serviceAllocation: serviceSelectors: - matchLabels: loadBalancerPool: mqtt --- # ip for services that need individual ports forwarded from WAN router (e.g. jitsi jvb udp) # not auto-assigned: a service gets it only with an explicit annotation # metallb.io/address-pool: public-ports-pool apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: public-ports-pool namespace: metallb-system spec: addresses: - 10.0.64.9/32 autoAssign: false --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: default namespace: metallb-system spec: ipAddressPools: - default-pool - dmz-pool - mqtt-pool - nfs-pool - public-ports-pool