Inhaltsverzeichnis

MetallB installieren

Über ein Manifestfile

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.9/config/manifests/metallb-native.yaml

Mittels Helm

helm repo add metallb https://metallb.github.io/metallb
helm repo update
helm install --namespace metallb-system --create-namespace metallb metallb/metallb

MetallB mit Multi-AddressPool Objekten

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: {}