charts: metallb-config-env
diff --git a/charts/metallb-config-env/.helmignore b/charts/metallb-config-env/.helmignore
new file mode 100644
index 0000000..0e8a0eb
--- /dev/null
+++ b/charts/metallb-config-env/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/charts/metallb-config-env/Chart.yaml b/charts/metallb-config-env/Chart.yaml
new file mode 100644
index 0000000..b2daa62
--- /dev/null
+++ b/charts/metallb-config-env/Chart.yaml
@@ -0,0 +1,6 @@
+apiVersion: v2
+name: metallb-config-env
+description: A Helm chart to configure Metallb for one of the user PCloud environments
+type: application
+version: 0.0.1
+appVersion: "0.0.1"
diff --git a/charts/metallb-config-env/templates/ip-address-pool.yaml b/charts/metallb-config-env/templates/ip-address-pool.yaml
new file mode 100644
index 0000000..20639fb
--- /dev/null
+++ b/charts/metallb-config-env/templates/ip-address-pool.yaml
@@ -0,0 +1,47 @@
+apiVersion: metallb.io/v1beta1
+kind: IPAddressPool
+metadata:
+  name: {{ .Values.id }}
+  namespace: metallb-system
+spec:
+  addresses:
+  - {{ .Values.rest.from }}-{{ .Values.rest.to }}
+---
+apiVersion: metallb.io/v1beta1
+kind: IPAddressPool
+metadata:
+  name: {{ .Values.id }}-ingress-private
+  namespace: metallb-system
+spec:
+  addresses:
+  - {{ .Values.ingressPrivate }}-{{ .Values.ingressPrivate }}
+---
+apiVersion: metallb.io/v1beta1
+kind: IPAddressPool
+metadata:
+  name: {{ .Values.id }}-headscale
+  namespace: metallb-system
+spec:
+  addresses:
+  - {{ .Values.headscale }}-{{ .Values.headscale }}
+---
+apiVersion: metallb.io/v1beta1
+kind: IPAddressPool
+metadata:
+  name: {{ .Values.id }}-soft-serve
+  namespace: metallb-system
+spec:
+  addresses:
+  - {{ .Values.softServe }}-{{ .Values.softServe }}
+---
+apiVersion: metallb.io/v1beta1
+kind: L2Advertisement
+metadata:
+  name: l2-advertisement-{{ .Values.id }}
+  namespace: metallb-system
+spec:
+  ipAddressPools:
+  - {{ .Values.id }}
+  - {{ .Values.id }}-ingress-private
+  - {{ .Values.id }}-headscale
+  - {{ .Values.id }}-soft-serve
diff --git a/charts/metallb-config-env/values.yaml b/charts/metallb-config-env/values.yaml
new file mode 100644
index 0000000..30054d6
--- /dev/null
+++ b/charts/metallb-config-env/values.yaml
@@ -0,0 +1,7 @@
+id: example
+ingressPrivate: 10.1.0.1
+headscale: 10.1.0.2
+softServe: 10.1.0.3
+rest:
+  from: 10.1.0.10
+  to: 10.1.0.255