diff --git a/clusters/base/infra/metallb/config.yaml b/clusters/base/infra/metallb/config.yaml new file mode 100644 index 0000000..9a6a23f --- /dev/null +++ b/clusters/base/infra/metallb/config.yaml @@ -0,0 +1,58 @@ +# 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: + - 10.0.64.5-10.0.64.6 + # exclude 10.0.64.7, its in dmz-pool + # exclude 10.0.64.8, its in mqtt-pool + - 10.0.64.9-10.0.64.19 + autoAssign: true + serviceAllocation: + serviceSelectors: + - matchLabels: + loadBalancerPool: default +--- +# 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 +--- +apiVersion: metallb.io/v1beta1 +kind: L2Advertisement +metadata: + name: default + namespace: metallb-system +spec: + ipAddressPools: + - default-pool + - dmz-pool + - mqtt-pool diff --git a/clusters/base/infra/metallb/helmrelease.yaml b/clusters/base/infra/metallb/helmrelease.yaml new file mode 100644 index 0000000..1d736d3 --- /dev/null +++ b/clusters/base/infra/metallb/helmrelease.yaml @@ -0,0 +1,15 @@ +apiVersion: helm.toolkit.fluxcd.io/v2 +kind: HelmRelease +metadata: + name: metallb + namespace: metallb-system +spec: + interval: 10m + chart: + spec: + chart: metallb + version: "0.16.1" + sourceRef: + kind: HelmRepository + name: metallb + namespace: metallb-system diff --git a/clusters/base/infra/metallb/helmrepository.yaml b/clusters/base/infra/metallb/helmrepository.yaml new file mode 100644 index 0000000..96b6af3 --- /dev/null +++ b/clusters/base/infra/metallb/helmrepository.yaml @@ -0,0 +1,8 @@ +apiVersion: source.toolkit.fluxcd.io/v1 +kind: HelmRepository +metadata: + name: metallb + namespace: metallb-system +spec: + interval: 1h + url: https://metallb.github.io/metallb diff --git a/clusters/base/infra/metallb/kustomization.yaml b/clusters/base/infra/metallb/kustomization.yaml new file mode 100644 index 0000000..ce00d11 --- /dev/null +++ b/clusters/base/infra/metallb/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - helmrepository.yaml + - helmrelease.yaml + - config.yaml diff --git a/clusters/base/namespaces/metallb-system.yaml b/clusters/base/namespaces/metallb-system.yaml new file mode 100644 index 0000000..fe6f1d8 --- /dev/null +++ b/clusters/base/namespaces/metallb-system.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: metallb-system diff --git a/clusters/home/infra/kustomization.yaml b/clusters/home/infra/kustomization.yaml index 0424f58..315e371 100644 --- a/clusters/home/infra/kustomization.yaml +++ b/clusters/home/infra/kustomization.yaml @@ -4,3 +4,4 @@ resources: - longhorn/longhorn-system.yaml - longhorn/storage-classes.yaml - cert-manager/certificate-issuers.yaml + - metallb.yaml diff --git a/clusters/home/infra/metallb.yaml b/clusters/home/infra/metallb.yaml new file mode 100644 index 0000000..b3191dc --- /dev/null +++ b/clusters/home/infra/metallb.yaml @@ -0,0 +1,14 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: metallb + namespace: flux-system +spec: + interval: 10m + sourceRef: + kind: GitRepository + name: flux-system + path: ./clusters/base/infra/metallb + prune: true + wait: true + retryInterval: 5s diff --git a/clusters/home/namespaces/kustomization.yaml b/clusters/home/namespaces/kustomization.yaml index e45868c..3273773 100644 --- a/clusters/home/namespaces/kustomization.yaml +++ b/clusters/home/namespaces/kustomization.yaml @@ -6,3 +6,4 @@ resources: - ../../base/namespaces/pim.yaml - ../../base/namespaces/longhorn-system.yaml - ../../base/namespaces/auth.yaml + - ../../base/namespaces/metallb-system.yaml