diff --git a/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta2 b/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta2 index ebb12725..cd44dc76 100644 --- a/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta2 +++ b/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta2 @@ -205,7 +205,7 @@ tlsCipherSuites: - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 {{- end }} -{{- if .kubernetes.kubelet.feature_gates | empty | not }} +{{- if .kubernetes.kubelet.feature_gates | empty | not }} featureGates: {{ .kubernetes.kubelet.feature_gates | toYaml | indent 2 }} {{- end }} diff --git a/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta3 b/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta3 index b594d9d3..a873c823 100644 --- a/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta3 +++ b/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta3 @@ -204,7 +204,7 @@ tlsCipherSuites: - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 {{- end }} -{{- if .kubernetes.kubelet.feature_gates | empty | not }} +{{- if .kubernetes.kubelet.feature_gates | empty | not }} featureGates: {{ .kubernetes.kubelet.feature_gates | toYaml | indent 2 }} {{- end }} diff --git a/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta4 b/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta4 index 70a72dc3..3d0514bd 100644 --- a/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta4 +++ b/builtin/core/roles/kubernetes/init-kubernetes/templates/kubeadm/kubeadm-init.v1beta4 @@ -235,7 +235,7 @@ tlsCipherSuites: - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 {{- end }} -{{- if .kubernetes.kubelet.feature_gates | empty | not }} +{{- if .kubernetes.kubelet.feature_gates | empty | not }} featureGates: {{ .kubernetes.kubelet.feature_gates | toYaml | indent 2 }} {{- end }} diff --git a/pkg/converter/tmpl/functions.go b/pkg/converter/tmpl/functions.go index e2c28c1b..767691bb 100644 --- a/pkg/converter/tmpl/functions.go +++ b/pkg/converter/tmpl/functions.go @@ -145,23 +145,19 @@ func getStringSlice(d map[string][]string, key string) []string { // kubeExtraArgs make kubeadm extra args of v1/beta4 // for string/string extra argument maps, convert to structured extra arguments -func kubeExtraArgs(input interface{}) []map[string]string { - result := []map[string]string{} +func kubeExtraArgs(input any) []map[string]string { v := reflect.ValueOf(input) - switch v.Kind() { - case reflect.Map: - iter := v.MapRange() - for iter.Next() { - key := iter.Key().String() - value := iter.Value() - var valueStr string - if value.CanInterface() { - valueStr = fmt.Sprintf("%v", value.Interface()) - } else { - valueStr = value.String() - } - result = append(result, map[string]string{"name": key, "value": valueStr}) - } + if v.Kind() != reflect.Map { + return []map[string]string{} + } + + result := make([]map[string]string, 0, v.Len()) + iter := v.MapRange() + for iter.Next() { + key := iter.Key().String() + value := iter.Value() + valueStr := fmt.Sprintf("%v", value.Interface()) + result = append(result, map[string]string{"name": key, "value": valueStr}) } return result }