diff --git a/deploy/local-path-storage.yaml b/deploy/local-path-storage.yaml
index c6527a74684287a414b0ed73ba65fa700aed91fa..cfae8b58cd6777facd09f23035b1dffd46460df6 100644
--- a/deploy/local-path-storage.yaml
+++ b/deploy/local-path-storage.yaml
@@ -104,6 +104,8 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
+            - name: CONFIG_MOUNT_PATH
+              value: "/etc/config/"
       volumes:
         - name: config-volume
           configMap:
diff --git a/main.go b/main.go
index 728cf0df192fc9bf00c7b6e277b5e55160bb42e0..cddd4097c3f6be786403c44d1587b095788ffef3 100644
--- a/main.go
+++ b/main.go
@@ -48,6 +48,7 @@ var (
 	DefaultProvisioningRetryCount = pvController.DefaultFailedProvisionThreshold
 	FlagDeletionRetryCount        = "deletion-retry-count"
 	DefaultDeletionRetryCount     = pvController.DefaultFailedDeleteThreshold
+	EnvConfigMountPath            = "CONFIG_MOUNT_PATH"
 )
 
 func cmdNotFound(c *cli.Context, command string) {
diff --git a/provisioner.go b/provisioner.go
index 797df703c5f07c7db1c557470846955e6bfd526c..e12485325f1b7bd44726bacefb200ffb690ad471 100644
--- a/provisioner.go
+++ b/provisioner.go
@@ -169,6 +169,29 @@ func (p *LocalPathProvisioner) refreshConfig() error {
 	return err
 }
 
+func (p *LocalPathProvisioner) refreshHelperPod() error {
+	p.configMutex.Lock()
+	defer p.configMutex.Unlock()
+
+	helperPodFile, envExists := os.LookupEnv(EnvConfigMountPath)
+	if !envExists {
+		return nil
+	}
+
+	helperPodFile = filepath.Join(helperPodFile, DefaultHelperPodFile)
+	newHelperPod, err := loadFile(helperPodFile)
+	if err != nil {
+		return err
+	}
+
+	p.helperPod, err = loadHelperPodFile(newHelperPod)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
 func (p *LocalPathProvisioner) watchAndRefreshConfig() {
 	go func() {
 		ticker := time.NewTicker(ConfigFileCheckInterval)
@@ -179,6 +202,9 @@ func (p *LocalPathProvisioner) watchAndRefreshConfig() {
 				if err := p.refreshConfig(); err != nil {
 					logrus.Errorf("failed to load the new config file: %v", err)
 				}
+				if err := p.refreshHelperPod(); err != nil {
+					logrus.Errorf("failed to load the new helper pod manifest: %v", err)
+				}
 			case <-p.ctx.Done():
 				logrus.Infof("stop watching config file")
 				return
diff --git a/util.go b/util.go
index 0a0b5415d1547a3a4060846dae8fbeb324a38d45..d1301c9223531e8e5c6864afab29db13c8d3acac 100644
--- a/util.go
+++ b/util.go
@@ -3,7 +3,7 @@ package main
 import (
 	"encoding/json"
 	"fmt"
-	"io/ioutil"
+	"io"
 	"os"
 
 	v1 "k8s.io/api/core/v1"
@@ -16,7 +16,7 @@ func loadFile(filepath string) (string, error) {
 		return "", err
 	}
 	defer f.Close()
-	helperPodYaml, err := ioutil.ReadAll(f)
+	helperPodYaml, err := io.ReadAll(f)
 	if err != nil {
 		return "", err
 	}