From 3a7f43781efb498342e079a285ad4fdbc7859100 Mon Sep 17 00:00:00 2001
From: nicktming <2279563278@qq.com>
Date: Tue, 11 Aug 2020 10:08:58 +0800
Subject: [PATCH] fix configmap name hardcode
---
deploy/chart/README.md | 5 +++--
deploy/chart/templates/configmap.yaml | 6 +++---
deploy/chart/templates/deployment.yaml | 2 +-
deploy/chart/values.yaml | 23 ++++++++++++++---------
main.go | 20 +++++++++++++++-----
provisioner.go | 22 ++++++++++++----------
6 files changed, 48 insertions(+), 30 deletions(-)
diff --git a/deploy/chart/README.md b/deploy/chart/README.md
index c611bb0c..e1bc502c 100644
--- a/deploy/chart/README.md
+++ b/deploy/chart/README.md
@@ -71,8 +71,9 @@ default values.
| `nodeSelector` | Node labels for Local Path Provisioner pod assignment | `{}` |
| `tolerations` | Node taints to tolerate | `[]` |
| `affinity` | Pod affinity | `{}` |
-| `setup` | Configuration of script to execute setup operations on each node | #!/bin/sh
path=$1
mkdir -m 0777 -p ${path} |
-| `teardown` | Configuration of script to execute teardown operations on each node | #!/bin/sh
path=$1
rm -rf ${path} |
+| `configmap.setup` | Configuration of script to execute setup operations on each node | #!/bin/sh
path=$1
mkdir -m 0777 -p ${path} |
+| `configmap.teardown` | Configuration of script to execute teardown operations on each node | #!/bin/sh
path=$1
rm -rf ${path} |
+| `configmap.name` | configmap name | `local-path-config` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
diff --git a/deploy/chart/templates/configmap.yaml b/deploy/chart/templates/configmap.yaml
index 672c8d52..ad9f2bc7 100644
--- a/deploy/chart/templates/configmap.yaml
+++ b/deploy/chart/templates/configmap.yaml
@@ -1,7 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
- name: {{ include "local-path-provisioner.fullname" . }}
+ name: {{ .Values.configmap.name }}
labels:
{{ include "local-path-provisioner.labels" . | indent 4 }}
data:
@@ -12,6 +12,6 @@ data:
"nodePathMap": {{ .Values.nodePathMap | toPrettyJson | nindent 8 }}
}
setup: |-
- {{ .Values.setup | nindent 4 }}
+ {{ .Values.configmap.setup | nindent 4 }}
teardown: |-
- {{ .Values.teardown | nindent 4 }}
+ {{ .Values.configmap.teardown | nindent 4 }}
diff --git a/deploy/chart/templates/deployment.yaml b/deploy/chart/templates/deployment.yaml
index 2c3cb769..fecb14d4 100644
--- a/deploy/chart/templates/deployment.yaml
+++ b/deploy/chart/templates/deployment.yaml
@@ -46,7 +46,7 @@ spec:
volumes:
- name: config-volume
configMap:
- name: {{ include "local-path-provisioner.fullname" . }}
+ name: {{ .Values.configmap.name }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
diff --git a/deploy/chart/values.yaml b/deploy/chart/values.yaml
index a49c7bac..6465961e 100644
--- a/deploy/chart/values.yaml
+++ b/deploy/chart/values.yaml
@@ -79,12 +79,17 @@ tolerations: []
affinity: {}
-setup: |-
- #!/bin/sh
- path=$1
- mkdir -m 0777 -p ${path}
-
-teardown: |-
- #!/bin/sh
- path=$1
- rm -rf ${path}
+configmap:
+ # specify the config map name
+ name: local-path-config
+ # specify the custom script for setup and teardown
+ setup: |-
+ #!/bin/sh
+ path=$1
+ mkdir -m 0777 -p ${path}
+
+ teardown: |-
+ #!/bin/sh
+ path=$1
+ rm -rf ${path}
+
diff --git a/main.go b/main.go
index fd4792f9..dfb56011 100644
--- a/main.go
+++ b/main.go
@@ -35,6 +35,7 @@ var (
DefaultKubeConfigFilePath = ".kube/config"
DefaultConfigFileKey = "config.json"
DefaultConfigMapName = "local-path-config"
+ FlagConfigMapName = "configmap-name"
)
func cmdNotFound(c *cli.Context, command string) {
@@ -87,6 +88,11 @@ func StartCmd() cli.Command {
Usage: "Paths to a kubeconfig. Only required when it is out-of-cluster.",
Value: "",
},
+ cli.StringFlag{
+ Name: FlagConfigMapName,
+ Usage: "Required. Specify configmap name.",
+ Value: DefaultConfigMapName,
+ },
},
Action: func(c *cli.Context) {
if err := startDaemon(c); err != nil {
@@ -118,8 +124,8 @@ func loadConfig(kubeconfig string) (*rest.Config, error) {
return clientcmd.BuildConfigFromFlags("", kubeconfig)
}
-func findConfigFileFromConfigMap(kubeClient clientset.Interface, namespace string) (string, error) {
- cm, err := kubeClient.CoreV1().ConfigMaps(namespace).Get(DefaultConfigMapName, metav1.GetOptions{})
+func findConfigFileFromConfigMap(kubeClient clientset.Interface, namespace, configMapName string) (string, error) {
+ cm, err := kubeClient.CoreV1().ConfigMaps(namespace).Get(configMapName, metav1.GetOptions{})
if err != nil {
return "", err
}
@@ -157,11 +163,15 @@ func startDaemon(c *cli.Context) error {
if namespace == "" {
return fmt.Errorf("invalid empty flag %v", FlagNamespace)
}
+ configMapName := c.String(FlagConfigMapName)
+ if configMapName == "" {
+ return fmt.Errorf("invalid empty flag %v", FlagConfigMapName)
+ }
configFile := c.String(FlagConfigFile)
if configFile == "" {
- configFile, err = findConfigFileFromConfigMap(kubeClient, namespace)
+ configFile, err = findConfigFileFromConfigMap(kubeClient, namespace, configMapName)
if err != nil {
- return fmt.Errorf("invalid empty flag %v and it also does not exist at ConfigMap %v/%v", FlagConfigFile, namespace, DefaultConfigMapName)
+ return fmt.Errorf("invalid empty flag %v and it also does not exist at ConfigMap %v/%v with err: %v", FlagConfigFile, namespace, configMapName, err)
}
}
helperImage := c.String(FlagHelperImage)
@@ -169,7 +179,7 @@ func startDaemon(c *cli.Context) error {
return fmt.Errorf("invalid empty flag %v", FlagHelperImage)
}
- provisioner, err := NewProvisioner(stopCh, kubeClient, configFile, namespace, helperImage)
+ provisioner, err := NewProvisioner(stopCh, kubeClient, configFile, namespace, helperImage, configMapName)
if err != nil {
return err
}
diff --git a/provisioner.go b/provisioner.go
index 6c2260f5..d36f2945 100644
--- a/provisioner.go
+++ b/provisioner.go
@@ -44,10 +44,11 @@ type LocalPathProvisioner struct {
namespace string
helperImage string
- config *Config
- configData *ConfigData
- configFile string
- configMutex *sync.RWMutex
+ config *Config
+ configData *ConfigData
+ configFile string
+ configMapName string
+ configMutex *sync.RWMutex
}
type NodePathMapData struct {
@@ -67,7 +68,7 @@ type Config struct {
NodePathMap map[string]*NodePathMap
}
-func NewProvisioner(stopCh chan struct{}, kubeClient *clientset.Clientset, configFile, namespace, helperImage string) (*LocalPathProvisioner, error) {
+func NewProvisioner(stopCh chan struct{}, kubeClient *clientset.Clientset, configFile, namespace, helperImage, configMapName string) (*LocalPathProvisioner, error) {
p := &LocalPathProvisioner{
stopCh: stopCh,
@@ -76,10 +77,11 @@ func NewProvisioner(stopCh chan struct{}, kubeClient *clientset.Clientset, confi
helperImage: helperImage,
// config will be updated shortly by p.refreshConfig()
- config: nil,
- configFile: configFile,
- configData: nil,
- configMutex: &sync.RWMutex{},
+ config: nil,
+ configFile: configFile,
+ configData: nil,
+ configMapName: configMapName,
+ configMutex: &sync.RWMutex{},
}
if err := p.refreshConfig(); err != nil {
return nil, err
@@ -368,7 +370,7 @@ func (p *LocalPathProvisioner) createHelperPod(action ActionType, cmdsForPath []
VolumeSource: v1.VolumeSource{
ConfigMap: &v1.ConfigMapVolumeSource{
LocalObjectReference: v1.LocalObjectReference{
- Name: "local-path-config",
+ Name: p.configMapName,
},
Items: []v1.KeyToPath{
{