From 01b1174c114c12dca776be043b67fc340af128bb Mon Sep 17 00:00:00 2001 From: Paco Xu Date: Tue, 4 Jul 2023 14:34:26 +0800 Subject: [PATCH] kubeadm: fix "migrate config --allow-experimental-api" to print v1beta4 kubeadm configurations instead of v1beta3 --- cmd/kubeadm/app/cmd/config.go | 4 ++-- cmd/kubeadm/app/cmd/upgrade/common.go | 3 ++- .../app/phases/uploadconfig/uploadconfig.go | 3 ++- cmd/kubeadm/app/util/config/common.go | 17 +++++++++++------ 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/cmd/kubeadm/app/cmd/config.go b/cmd/kubeadm/app/cmd/config.go index 6bba4e08606..f10901a684d 100644 --- a/cmd/kubeadm/app/cmd/config.go +++ b/cmd/kubeadm/app/cmd/config.go @@ -199,7 +199,7 @@ func getDefaultInitConfigBytes() ([]byte, error) { return []byte{}, err } - return configutil.MarshalKubeadmConfigObject(internalcfg) + return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1.SchemeGroupVersion) } func getDefaultNodeConfigBytes() ([]byte, error) { @@ -219,7 +219,7 @@ func getDefaultNodeConfigBytes() ([]byte, error) { return []byte{}, err } - return configutil.MarshalKubeadmConfigObject(internalcfg) + return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1.SchemeGroupVersion) } // newCmdConfigMigrate returns cobra.Command for "kubeadm config migrate" command diff --git a/cmd/kubeadm/app/cmd/upgrade/common.go b/cmd/kubeadm/app/cmd/upgrade/common.go index f2095cb2001..f154a9bae42 100644 --- a/cmd/kubeadm/app/cmd/upgrade/common.go +++ b/cmd/kubeadm/app/cmd/upgrade/common.go @@ -33,6 +33,7 @@ import ( "k8s.io/klog/v2" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" "k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" @@ -223,7 +224,7 @@ func printConfiguration(clustercfg *kubeadmapi.ClusterConfiguration, w io.Writer return } - cfgYaml, err := configutil.MarshalKubeadmConfigObject(clustercfg) + cfgYaml, err := configutil.MarshalKubeadmConfigObject(clustercfg, kubeadmapiv1.SchemeGroupVersion) if err == nil { printer.Fprintln(w, "[upgrade/config] Configuration used:") diff --git a/cmd/kubeadm/app/phases/uploadconfig/uploadconfig.go b/cmd/kubeadm/app/phases/uploadconfig/uploadconfig.go index 2c516157700..a7bd9a4a19e 100644 --- a/cmd/kubeadm/app/phases/uploadconfig/uploadconfig.go +++ b/cmd/kubeadm/app/phases/uploadconfig/uploadconfig.go @@ -25,6 +25,7 @@ import ( clientset "k8s.io/client-go/kubernetes" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient" configutil "k8s.io/kubernetes/cmd/kubeadm/app/util/config" @@ -53,7 +54,7 @@ func UploadConfiguration(cfg *kubeadmapi.InitConfiguration, client clientset.Int } // Marshal the ClusterConfiguration into YAML - clusterConfigurationYaml, err := configutil.MarshalKubeadmConfigObject(clusterConfigurationToUpload) + clusterConfigurationYaml, err := configutil.MarshalKubeadmConfigObject(clusterConfigurationToUpload, kubeadmapiv1.SchemeGroupVersion) if err != nil { return err } diff --git a/cmd/kubeadm/app/util/config/common.go b/cmd/kubeadm/app/util/config/common.go index f5d7b1f9c16..86f4227018d 100644 --- a/cmd/kubeadm/app/util/config/common.go +++ b/cmd/kubeadm/app/util/config/common.go @@ -36,7 +36,8 @@ import ( kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" - kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" + kubeadmapiv1old "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" + kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta4" "k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" "k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" "k8s.io/kubernetes/cmd/kubeadm/app/constants" @@ -44,12 +45,12 @@ import ( ) // MarshalKubeadmConfigObject marshals an Object registered in the kubeadm scheme. If the object is a InitConfiguration or ClusterConfiguration, some extra logic is run -func MarshalKubeadmConfigObject(obj runtime.Object) ([]byte, error) { +func MarshalKubeadmConfigObject(obj runtime.Object, gv schema.GroupVersion) ([]byte, error) { switch internalcfg := obj.(type) { case *kubeadmapi.InitConfiguration: - return MarshalInitConfigurationToBytes(internalcfg, kubeadmapiv1.SchemeGroupVersion) + return MarshalInitConfigurationToBytes(internalcfg, gv) default: - return kubeadmutil.MarshalToYamlForCodecs(obj, kubeadmapiv1.SchemeGroupVersion, kubeadmscheme.Codecs) + return kubeadmutil.MarshalToYamlForCodecs(obj, gv, kubeadmscheme.Codecs) } } @@ -258,13 +259,17 @@ func MigrateOldConfig(oldConfig []byte, allowExperimental bool) ([]byte, error) return []byte{}, err } + gv := kubeadmapiv1old.SchemeGroupVersion + if allowExperimental { + gv = kubeadmapiv1.SchemeGroupVersion + } // Migrate InitConfiguration and ClusterConfiguration if there are any in the config if kubeadmutil.GroupVersionKindsHasInitConfiguration(gvks...) || kubeadmutil.GroupVersionKindsHasClusterConfiguration(gvks...) { o, err := documentMapToInitConfiguration(gvkmap, true, allowExperimental, true) if err != nil { return []byte{}, err } - b, err := MarshalKubeadmConfigObject(o) + b, err := MarshalKubeadmConfigObject(o, gv) if err != nil { return []byte{}, err } @@ -277,7 +282,7 @@ func MigrateOldConfig(oldConfig []byte, allowExperimental bool) ([]byte, error) if err != nil { return []byte{}, err } - b, err := MarshalKubeadmConfigObject(o) + b, err := MarshalKubeadmConfigObject(o, gv) if err != nil { return []byte{}, err }