kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-native.yaml
helm repo add metallb https://metallb.github.io/metallb helm repo update helm install --namespace metallb-system --create-namespace metallb metallb/metallb
Wenn man gerne mehrere IPAddressPool Objekte anlegen möchte dann kann man die Zuordnung über die Annotations im Service Objekt machen. Beispiel:
--- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: advertisement namespace: metallb-system spec: ipAddressPools: - pool - pool2 --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: pool namespace: metallb-system spec: addresses: - 100.80.0.80/32 - 100.80.0.191/32 --- apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: pool2 namespace: metallb-system spec: addresses: - 192.168.20.10/32 - 192.168.20.11/32
Und passende Service Objekte vom Type Loadbalancer schauen dann so aus:
--- apiVersion: v1 kind: Service metadata: creationTimestamp: null annotations: metallb.universe.tf/address-pool: pool labels: app: svc-homepage name: svc-homepage namespace: homepage spec: ports: - name: "80" port: 80 protocol: TCP targetPort: 80 selector: app: homepage type: LoadBalancer status: loadBalancer: {} --- apiVersion: v1 kind: Service metadata: creationTimestamp: null annotations: metallb.universe.tf/address-pool: pool2 labels: app: svc-homepage name: svc-homepage2 namespace: homepage spec: ports: - name: "80" port: 80 protocol: TCP targetPort: 80 selector: app: homepage type: LoadBalancer status: loadBalancer: {}