# MetalLB — Manual Setup MetalLB is **not** included in `bootstrap.sh deploy`. It must be installed manually before deploying `traefik-internal` (which depends on the MetalLB `loadBalancerClass`). ```bash helm repo add metallb https://metallb.github.io/metallb helm repo update helm dependency build charts/metallb helm upgrade --install metallb charts/metallb -n kube-system --wait ``` The chart wraps the upstream MetalLB subchart and adds a custom `IPAddressPool` + `L2Advertisement` (defined in `charts/metallb/templates/pool.yaml`). The pool assigns a single IP (`10.0.1.250`) with `autoAssign: false`, so only services that explicitly request the `internal` pool via annotation get that IP.