From 772344504a9bd5733d79abe9ae7dd586a1ab71e6 Mon Sep 17 00:00:00 2001
From: Tom Zaspel <tom@zaspel.it>
Date: Tue, 11 Feb 2025 17:11:20 +0100
Subject: [PATCH] feat: add ability to set custom namespace

Signed-off-by: Tom Zaspel <tom@zaspel.it>
---
 .../chart/local-path-provisioner/templates/_helpers.tpl   | 8 ++++++++
 .../chart/local-path-provisioner/templates/configmap.yaml | 5 ++---
 .../local-path-provisioner/templates/deployment.yaml      | 4 ++--
 .../local-path-provisioner/templates/registry-secret.yaml | 2 +-
 deploy/chart/local-path-provisioner/templates/role.yaml   | 2 +-
 .../local-path-provisioner/templates/rolebinding.yaml     | 4 ++--
 .../local-path-provisioner/templates/serviceaccount.yaml  | 2 +-
 deploy/chart/local-path-provisioner/values.yaml           | 2 +-
 8 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/deploy/chart/local-path-provisioner/templates/_helpers.tpl b/deploy/chart/local-path-provisioner/templates/_helpers.tpl
index 40c0fa5d..cc8429e1 100644
--- a/deploy/chart/local-path-provisioner/templates/_helpers.tpl
+++ b/deploy/chart/local-path-provisioner/templates/_helpers.tpl
@@ -31,6 +31,14 @@ Create chart name and version as used by the chart label.
 {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
 {{- end -}}
 
+{{- define "local-path-provisioner.namespace" -}}
+{{- if .Values.namespaceOverride }}
+{{- .Values.namespaceOverride }}
+{{- else }}
+{{- .Release.Namespace }}
+{{- end }}
+{{- end -}}
+
 {{/*
 Common labels
 */}}
diff --git a/deploy/chart/local-path-provisioner/templates/configmap.yaml b/deploy/chart/local-path-provisioner/templates/configmap.yaml
index 91a53190..01a5fa66 100644
--- a/deploy/chart/local-path-provisioner/templates/configmap.yaml
+++ b/deploy/chart/local-path-provisioner/templates/configmap.yaml
@@ -2,7 +2,7 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: {{ .Values.configmap.name }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "local-path-provisioner.namespace" . }}
   labels:
 {{ include "local-path-provisioner.labels" . | indent 4 }}
 data:
@@ -38,7 +38,7 @@ data:
     kind: Pod
     metadata:
       name: {{ .Values.configmap.helperPod.name }}
-      namespace: {{ default .Release.Namespace .Values.configmap.helperPod.namespaceOverride }}
+      namespace: {{ default (include "local-path-provisioner.namespace" .) .Values.configmap.helperPod.namespaceOverride }}
       {{- with .Values.configmap.helperPod.annotations }}
       annotations:
         {{- toYaml . | nindent 8 }}
@@ -59,4 +59,3 @@ data:
           imagePullPolicy: {{ .Values.image.pullPolicy }}
           resources:
             {{- toYaml .Values.helperPod.resources | nindent 12 }}
-
diff --git a/deploy/chart/local-path-provisioner/templates/deployment.yaml b/deploy/chart/local-path-provisioner/templates/deployment.yaml
index af07077c..d751aede 100644
--- a/deploy/chart/local-path-provisioner/templates/deployment.yaml
+++ b/deploy/chart/local-path-provisioner/templates/deployment.yaml
@@ -2,7 +2,7 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: {{ include "local-path-provisioner.fullname" . }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "local-path-provisioner.namespace" . }}
   labels:
 {{ include "local-path-provisioner.labels" . | indent 4 }}
 spec:
@@ -72,7 +72,7 @@ spec:
               mountPath: /etc/config/
           env:
             - name: POD_NAMESPACE
-              value: {{ .Release.Namespace }}
+              value: {{ include "local-path-provisioner.namespace" . }}
             - name: CONFIG_MOUNT_PATH
               value: /etc/config/
           resources:
diff --git a/deploy/chart/local-path-provisioner/templates/registry-secret.yaml b/deploy/chart/local-path-provisioner/templates/registry-secret.yaml
index 9b000fef..cb1c5364 100644
--- a/deploy/chart/local-path-provisioner/templates/registry-secret.yaml
+++ b/deploy/chart/local-path-provisioner/templates/registry-secret.yaml
@@ -3,7 +3,7 @@ apiVersion: v1
 kind: Secret
 metadata:
   name: {{ .Values.defaultSettings.registrySecret }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "local-path-provisioner.namespace" . }}
 type: kubernetes.io/dockerconfigjson
 data:
   .dockerconfigjson: {{ template "local-path-provisioner.secret" . }}
diff --git a/deploy/chart/local-path-provisioner/templates/role.yaml b/deploy/chart/local-path-provisioner/templates/role.yaml
index ec6c2e51..887f8d24 100644
--- a/deploy/chart/local-path-provisioner/templates/role.yaml
+++ b/deploy/chart/local-path-provisioner/templates/role.yaml
@@ -3,7 +3,7 @@ apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 metadata:
   name: {{ include "local-path-provisioner.fullname" . }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "local-path-provisioner.namespace" . }}
   labels:
 {{ include "local-path-provisioner.labels" . | indent 4 }}
 rules:
diff --git a/deploy/chart/local-path-provisioner/templates/rolebinding.yaml b/deploy/chart/local-path-provisioner/templates/rolebinding.yaml
index 53295c31..2f244e5c 100644
--- a/deploy/chart/local-path-provisioner/templates/rolebinding.yaml
+++ b/deploy/chart/local-path-provisioner/templates/rolebinding.yaml
@@ -3,7 +3,7 @@ apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
 metadata:
   name: {{ include "local-path-provisioner.fullname" . }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "local-path-provisioner.namespace" . }}
   labels:
 {{ include "local-path-provisioner.labels" . | indent 4 }}
 roleRef:
@@ -13,5 +13,5 @@ roleRef:
 subjects:
   - kind: ServiceAccount
     name: {{ template "local-path-provisioner.serviceAccountName" . }}
-    namespace: {{ .Release.Namespace }}
+    namespace: {{ include "local-path-provisioner.namespace" . }}
 {{- end -}}
diff --git a/deploy/chart/local-path-provisioner/templates/serviceaccount.yaml b/deploy/chart/local-path-provisioner/templates/serviceaccount.yaml
index ed5ac16e..b0d6e924 100644
--- a/deploy/chart/local-path-provisioner/templates/serviceaccount.yaml
+++ b/deploy/chart/local-path-provisioner/templates/serviceaccount.yaml
@@ -3,7 +3,7 @@ apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: {{ template "local-path-provisioner.serviceAccountName" . }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "local-path-provisioner.namespace" . }}
   labels:
 {{ include "local-path-provisioner.labels" . | indent 4 }}
 imagePullSecrets:
diff --git a/deploy/chart/local-path-provisioner/values.yaml b/deploy/chart/local-path-provisioner/values.yaml
index d0741d64..cf3403d5 100644
--- a/deploy/chart/local-path-provisioner/values.yaml
+++ b/deploy/chart/local-path-provisioner/values.yaml
@@ -2,6 +2,7 @@
 
 replicaCount: 1
 commonLabels: {}
+namespace: local-path-provisioner
 
 image:
   repository: rancher/local-path-provisioner
@@ -162,7 +163,6 @@ configmap:
     namespaceOverride: ""
     name: "helper-pod"
     annotations: {}
-
 # Number of provisioner worker threads to call provision/delete simultaneously.
 # workerThreads: 4
 
-- 
GitLab