diff --git a/cluster/plan.go b/cluster/plan.go index 9d1846aa..069d695c 100644 --- a/cluster/plan.go +++ b/cluster/plan.go @@ -203,7 +203,7 @@ func (c *Cluster) BuildKubeAPIProcess(host *hosts.Host, serviceOptions v3.Kubern "tls-private-key-file": pki.GetKeyPath(pki.KubeAPICertName), } CommandArrayArgs := make(map[string][]string, len(c.Services.KubeAPI.ExtraArgsArray)) - Env := make([]string, len(c.Services.KubeAPI.ExtraEnv)) + var Env []string if len(c.CloudProvider.Name) > 0 { CommandArgs["cloud-config"] = cloudConfigFileName @@ -1272,6 +1272,10 @@ func getUniqStringList(l []string) []string { m := map[string]bool{} ul := []string{} for _, k := range l { + k = strings.TrimSpace(k) + if k == "" { + continue + } if _, ok := m[k]; !ok { m[k] = true ul = append(ul, k) diff --git a/cluster/plan_test.go b/cluster/plan_test.go new file mode 100644 index 00000000..5dcc3bc0 --- /dev/null +++ b/cluster/plan_test.go @@ -0,0 +1,52 @@ +package cluster + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func Test_getUniqStringList(t *testing.T) { + type args struct { + l []string + } + tests := []struct { + name string + args args + want []string + }{ + { + "contain strings with only spaces", + args{ + []string{" ", "key1=value1", " ", "key2=value2"}, + }, + []string{"key1=value1", "key2=value2"}, + }, + { + "contain strings with trailing or leading spaces", + args{ + []string{" key1=value1", "key1=value1 ", " key2=value2 "}, + }, + []string{"key1=value1", "key2=value2"}, + }, + { + "contain duplicated strings", + args{ + []string{"", "key1=value1", "key1=value1", "key2=value2"}, + }, + []string{"key1=value1", "key2=value2"}, + }, + { + "contain empty string", + args{ + []string{"", "key1=value1", "", "key2=value2"}, + }, + []string{"key1=value1", "key2=value2"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equalf(t, tt.want, getUniqStringList(tt.args.l), "getUniqStringList(%v)", tt.args.l) + }) + } +} diff --git a/scripts/integration b/scripts/integration index cb6b158e..ad88123f 100755 --- a/scripts/integration +++ b/scripts/integration @@ -90,6 +90,25 @@ nodes: - address: rke-node-${node} role: [etcd, controlplane, worker] user: ubuntu +services: + etcd: + extra_env: + - TEST_VAR=etcd + kubeproxy: + extra_env: + - TEST_VAR=kube-proxy + scheduler: + extra_env: + - TEST_VAR=scheduler + kubelet: + extra_env: + - TEST_VAR=kubelet + kube-controller: + extra_env: + - TEST_VAR=kube-controller + kube-api: + extra_env: + - TEST_VAR=kube-api EOF if [ "x${NETWORK_PLUGIN}" != "x" ]; then