kubeadm: fix "migrate config --allow-experimental-api" to print v1beta4 kubeadm configurations instead of v1beta3

This commit is contained in:
Paco Xu 2023-07-04 14:34:26 +08:00
parent 0a82bdbfdb
commit 01b1174c11
4 changed files with 17 additions and 10 deletions

View File

@ -199,7 +199,7 @@ func getDefaultInitConfigBytes() ([]byte, error) {
return []byte{}, err return []byte{}, err
} }
return configutil.MarshalKubeadmConfigObject(internalcfg) return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1.SchemeGroupVersion)
} }
func getDefaultNodeConfigBytes() ([]byte, error) { func getDefaultNodeConfigBytes() ([]byte, error) {
@ -219,7 +219,7 @@ func getDefaultNodeConfigBytes() ([]byte, error) {
return []byte{}, err return []byte{}, err
} }
return configutil.MarshalKubeadmConfigObject(internalcfg) return configutil.MarshalKubeadmConfigObject(internalcfg, kubeadmapiv1.SchemeGroupVersion)
} }
// newCmdConfigMigrate returns cobra.Command for "kubeadm config migrate" command // newCmdConfigMigrate returns cobra.Command for "kubeadm config migrate" command

View File

@ -33,6 +33,7 @@ import (
"k8s.io/klog/v2" "k8s.io/klog/v2"
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" 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" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util"
"k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" "k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs"
@ -223,7 +224,7 @@ func printConfiguration(clustercfg *kubeadmapi.ClusterConfiguration, w io.Writer
return return
} }
cfgYaml, err := configutil.MarshalKubeadmConfigObject(clustercfg) cfgYaml, err := configutil.MarshalKubeadmConfigObject(clustercfg, kubeadmapiv1.SchemeGroupVersion)
if err == nil { if err == nil {
printer.Fprintln(w, "[upgrade/config] Configuration used:") printer.Fprintln(w, "[upgrade/config] Configuration used:")

View File

@ -25,6 +25,7 @@ import (
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" 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" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient" "k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient"
configutil "k8s.io/kubernetes/cmd/kubeadm/app/util/config" 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 // Marshal the ClusterConfiguration into YAML
clusterConfigurationYaml, err := configutil.MarshalKubeadmConfigObject(clusterConfigurationToUpload) clusterConfigurationYaml, err := configutil.MarshalKubeadmConfigObject(clusterConfigurationToUpload, kubeadmapiv1.SchemeGroupVersion)
if err != nil { if err != nil {
return err return err
} }

View File

@ -36,7 +36,8 @@ import (
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" 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/cmd/options"
"k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" "k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs"
"k8s.io/kubernetes/cmd/kubeadm/app/constants" "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 // 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) { switch internalcfg := obj.(type) {
case *kubeadmapi.InitConfiguration: case *kubeadmapi.InitConfiguration:
return MarshalInitConfigurationToBytes(internalcfg, kubeadmapiv1.SchemeGroupVersion) return MarshalInitConfigurationToBytes(internalcfg, gv)
default: 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 return []byte{}, err
} }
gv := kubeadmapiv1old.SchemeGroupVersion
if allowExperimental {
gv = kubeadmapiv1.SchemeGroupVersion
}
// Migrate InitConfiguration and ClusterConfiguration if there are any in the config // Migrate InitConfiguration and ClusterConfiguration if there are any in the config
if kubeadmutil.GroupVersionKindsHasInitConfiguration(gvks...) || kubeadmutil.GroupVersionKindsHasClusterConfiguration(gvks...) { if kubeadmutil.GroupVersionKindsHasInitConfiguration(gvks...) || kubeadmutil.GroupVersionKindsHasClusterConfiguration(gvks...) {
o, err := documentMapToInitConfiguration(gvkmap, true, allowExperimental, true) o, err := documentMapToInitConfiguration(gvkmap, true, allowExperimental, true)
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err
} }
b, err := MarshalKubeadmConfigObject(o) b, err := MarshalKubeadmConfigObject(o, gv)
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err
} }
@ -277,7 +282,7 @@ func MigrateOldConfig(oldConfig []byte, allowExperimental bool) ([]byte, error)
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err
} }
b, err := MarshalKubeadmConfigObject(o) b, err := MarshalKubeadmConfigObject(o, gv)
if err != nil { if err != nil {
return []byte{}, err return []byte{}, err
} }