diff --git a/clusters/atlas/flux-system/platform/metallb/kustomization.yaml b/clusters/atlas/flux-system/platform/metallb/kustomization.yaml index 98baaff8..9b5bf3a3 100644 --- a/clusters/atlas/flux-system/platform/metallb/kustomization.yaml +++ b/clusters/atlas/flux-system/platform/metallb/kustomization.yaml @@ -14,3 +14,23 @@ spec: prune: true wait: true targetNamespace: metallb-system +--- +# Temporary second wave: MetalLB rejects overlapping pools during dry-run. +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: ingress-pool-transition + namespace: flux-system +spec: + interval: 10m + retryInterval: 10s + dependsOn: + - name: metallb + sourceRef: + kind: GitRepository + name: flux-system + path: ./infrastructure/metallb/ingress-pool-transition + # The normal metallb stack adopts the pool after this one-time transition. + prune: false + wait: false + targetNamespace: metallb-system diff --git a/infrastructure/metallb/ingress-pool-transition/ingress-pool.yaml b/infrastructure/metallb/ingress-pool-transition/ingress-pool.yaml new file mode 100644 index 00000000..8b29f331 --- /dev/null +++ b/infrastructure/metallb/ingress-pool-transition/ingress-pool.yaml @@ -0,0 +1,23 @@ +# infrastructure/metallb/ingress-pool.yaml +apiVersion: metallb.io/v1beta1 +kind: IPAddressPool +metadata: + name: ingress-pool + namespace: metallb-system +spec: + addresses: + - 192.168.22.9/32 + autoAssign: false +--- +apiVersion: metallb.io/v1beta1 +kind: L2Advertisement +metadata: + name: ingress-adv + namespace: metallb-system +spec: + ipAddressPools: + - ingress-pool + # Keep the shared public VIP off undervolting and I/O-saturated workers. + nodeSelectors: + - matchLabels: + node-role.kubernetes.io/control-plane: "true" diff --git a/infrastructure/metallb/ingress-pool-transition/kustomization.yaml b/infrastructure/metallb/ingress-pool-transition/kustomization.yaml new file mode 100644 index 00000000..8bd7deba --- /dev/null +++ b/infrastructure/metallb/ingress-pool-transition/kustomization.yaml @@ -0,0 +1,5 @@ +# infrastructure/metallb/ingress-pool-transition/kustomization.yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ingress-pool.yaml diff --git a/infrastructure/metallb/ippool.yaml b/infrastructure/metallb/ippool.yaml index e7922801..d3663f69 100644 --- a/infrastructure/metallb/ippool.yaml +++ b/infrastructure/metallb/ippool.yaml @@ -7,7 +7,6 @@ metadata: spec: addresses: - 192.168.22.4-192.168.22.6 - - 192.168.22.9-192.168.22.9 autoAssign: true --- apiVersion: metallb.io/v1beta1 diff --git a/infrastructure/metallb/lan-ai-pool.yaml b/infrastructure/metallb/lan-ai-pool.yaml index db4f7ea7..78be3f0a 100644 --- a/infrastructure/metallb/lan-ai-pool.yaml +++ b/infrastructure/metallb/lan-ai-pool.yaml @@ -17,3 +17,6 @@ metadata: spec: ipAddressPools: - lan-ai-pool + nodeSelectors: + - matchLabels: + node-role.kubernetes.io/control-plane: "true"