diff --git a/clusters/k8s01/metallb/metallb.yaml b/clusters/k8s01/metallb/metallb.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ed3b7a5092494c09a25a1e1680cde4da1ba7f17d
--- /dev/null
+++ b/clusters/k8s01/metallb/metallb.yaml
@@ -0,0 +1,14 @@
+apiVersion: metallb.io/v1beta1
+kind: IPAddressPool
+metadata:
+  name: k8s01-pool
+  namespace: metallb-system
+spec:
+  addresses:
+    - 192.168.100.128/24
+---
+apiVersion: metallb.io/v1beta1
+kind: L2Advertisement
+metadata:
+  name: advertise-all
+  namespace: metallb-system
diff --git a/infrastructure/metallb/release.yaml b/infrastructure/metallb/release.yaml
index 58fe8eee1b9dff7c8124110c9e826cbf8c1b3f9d..99af77b7dd82138d0f1526cbb288e27d6e6790fc 100644
--- a/infrastructure/metallb/release.yaml
+++ b/infrastructure/metallb/release.yaml
@@ -12,19 +12,29 @@ spec:
         kind: HelmRepository
         name: metallb
         namespace: metallb-system
-      version: 0.12.1
+      version: 0.13.5
   interval: 5m
   install:
     crds: CreateReplace
   upgrade:
     crds: CreateReplace
   values:
-    configInline:
-      address-pools:
-      - name: default
-        protocol: layer2
-        addresses:
-        - 192.168.100.128/26
+  valuesFrom:
+    - kind: ConfigMap
+      name: metallb-base-values
+      valuesKey: values.yaml
+    - kind: Secret
+      name: metallb-override-values
+      valuesKey: values-overrides.yaml
+      optional: true
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: metallb-base-values
+  namespace: metallb-system
+data:
+  values.yaml: |
     prometheus:
       podMonitor:
         enabled: true