From cca7a205adbf10bb192be7e256b7cd4a7a5ef870 Mon Sep 17 00:00:00 2001 From: Paco Xu Date: Fri, 16 Dec 2022 22:59:57 +0800 Subject: [PATCH] remove kubeadm v1beta2 support --- cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go | 3 - cmd/kubeadm/app/apis/kubeadm/scheme/scheme.go | 2 - cmd/kubeadm/app/apis/kubeadm/v1beta3/doc.go | 1 + .../v1beta3/zz_generated.conversion.go | 16 +- cmd/kubeadm/app/cmd/config_test.go | 3 +- cmd/kubeadm/app/images/images.go | 4 +- cmd/kubeadm/app/images/images_test.go | 16 +- cmd/kubeadm/app/util/config/cluster_test.go | 87 ---- cmd/kubeadm/app/util/config/common_test.go | 405 +++++++++--------- .../app/util/config/initconfiguration_test.go | 17 - .../app/util/config/joinconfiguration_test.go | 26 -- .../testdata/invalid_casesensitive_field.yaml | 2 +- .../invalid_duplicate_field_clustercfg.yaml | 2 +- .../invalid_duplicate_field_initcfg.yaml | 2 +- .../invalid_duplicate_field_joincfg.yaml | 2 +- .../invalid_unknown_field_clustercfg.yaml | 2 +- .../invalid_unknown_field_initcfg.yaml | 2 +- .../invalid_unknown_field_joincfg.yaml | 2 +- .../strict/testdata/valid_clustercfg.yaml | 2 +- .../config/strict/testdata/valid_initcfg.yaml | 2 +- .../config/strict/testdata/valid_joincfg.yaml | 2 +- cmd/kubeadm/test/cmd/init_test.go | 9 +- 22 files changed, 233 insertions(+), 376 deletions(-) diff --git a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go index 7e3ab4c4f38..a06ad8f6a33 100644 --- a/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go +++ b/cmd/kubeadm/app/apis/kubeadm/fuzzer/fuzzer.go @@ -89,9 +89,6 @@ func fuzzClusterConfiguration(obj *kubeadm.ClusterConfiguration, c fuzz.Continue func fuzzDNS(obj *kubeadm.DNS, c fuzz.Continue) { c.FuzzNoCustom(obj) - - // Pinning values for fields that get defaults if fuzz value is empty string or nil - obj.Type = kubeadm.CoreDNS } func fuzzComponentConfigMap(obj *kubeadm.ComponentConfigMap, c fuzz.Continue) { diff --git a/cmd/kubeadm/app/apis/kubeadm/scheme/scheme.go b/cmd/kubeadm/app/apis/kubeadm/scheme/scheme.go index 1e250937772..19d691f9db4 100644 --- a/cmd/kubeadm/app/apis/kubeadm/scheme/scheme.go +++ b/cmd/kubeadm/app/apis/kubeadm/scheme/scheme.go @@ -24,7 +24,6 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" ) @@ -42,7 +41,6 @@ func init() { // AddToScheme builds the kubeadm scheme using all known versions of the kubeadm api. func AddToScheme(scheme *runtime.Scheme) { utilruntime.Must(kubeadm.AddToScheme(scheme)) - utilruntime.Must(v1beta2.AddToScheme(scheme)) utilruntime.Must(v1beta3.AddToScheme(scheme)) utilruntime.Must(scheme.SetVersionPriority(v1beta3.SchemeGroupVersion)) } diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta3/doc.go b/cmd/kubeadm/app/apis/kubeadm/v1beta3/doc.go index 4922c4c9c65..65e84298a46 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta3/doc.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta3/doc.go @@ -43,6 +43,7 @@ limitations under the License. // // - kubeadm v1.15.x and newer can be used to migrate from v1beta1 to v1beta2. // - kubeadm v1.22.x and newer no longer support v1beta1 and older APIs, but can be used to migrate v1beta2 to v1beta3. +// - kubeadm v1.27.x and newer no longer support v1beta2 and older APIs. // // # Basics // diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta3/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1beta3/zz_generated.conversion.go index 032f86ca3ca..4bfec27242a 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta3/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta3/zz_generated.conversion.go @@ -89,6 +89,11 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*kubeadm.DNS)(nil), (*DNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_kubeadm_DNS_To_v1beta3_DNS(a.(*kubeadm.DNS), b.(*DNS), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*Discovery)(nil), (*kubeadm.Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta3_Discovery_To_kubeadm_Discovery(a.(*Discovery), b.(*kubeadm.Discovery), scope) }); err != nil { @@ -209,11 +214,6 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } - if err := s.AddConversionFunc((*kubeadm.DNS)(nil), (*DNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_kubeadm_DNS_To_v1beta3_DNS(a.(*kubeadm.DNS), b.(*DNS), scope) - }); err != nil { - return err - } if err := s.AddConversionFunc((*kubeadm.InitConfiguration)(nil), (*InitConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_kubeadm_InitConfiguration_To_v1beta3_InitConfiguration(a.(*kubeadm.InitConfiguration), b.(*InitConfiguration), scope) }); err != nil { @@ -407,13 +407,17 @@ func Convert_v1beta3_DNS_To_kubeadm_DNS(in *DNS, out *kubeadm.DNS, s conversion. } func autoConvert_kubeadm_DNS_To_v1beta3_DNS(in *kubeadm.DNS, out *DNS, s conversion.Scope) error { - // WARNING: in.Type requires manual conversion: does not exist in peer-type if err := Convert_kubeadm_ImageMeta_To_v1beta3_ImageMeta(&in.ImageMeta, &out.ImageMeta, s); err != nil { return err } return nil } +// Convert_kubeadm_DNS_To_v1beta3_DNS is an autogenerated conversion function. +func Convert_kubeadm_DNS_To_v1beta3_DNS(in *kubeadm.DNS, out *DNS, s conversion.Scope) error { + return autoConvert_kubeadm_DNS_To_v1beta3_DNS(in, out, s) +} + func autoConvert_v1beta3_Discovery_To_kubeadm_Discovery(in *Discovery, out *kubeadm.Discovery, s conversion.Scope) error { out.BootstrapToken = (*kubeadm.BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken)) out.File = (*kubeadm.FileDiscovery)(unsafe.Pointer(in.File)) diff --git a/cmd/kubeadm/app/cmd/config_test.go b/cmd/kubeadm/app/cmd/config_test.go index 0b4f10eb558..b4fef287360 100644 --- a/cmd/kubeadm/app/cmd/config_test.go +++ b/cmd/kubeadm/app/cmd/config_test.go @@ -34,7 +34,6 @@ import ( "k8s.io/utils/exec" fakeexec "k8s.io/utils/exec/testing" - kubeadmapiv1old "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" outputapischeme "k8s.io/kubernetes/cmd/kubeadm/app/apis/output/scheme" "k8s.io/kubernetes/cmd/kubeadm/app/constants" @@ -388,7 +387,7 @@ func TestMigrate(t *testing.T) { # This is intentionally testing an old API version. Sometimes this may be the latest version (if no old configs are supported). apiVersion: %s kind: InitConfiguration - `, kubeadmapiv1old.SchemeGroupVersion.String()))) + `, kubeadmapiv1.SchemeGroupVersion.String()))) configFile, cleanup := tempConfig(t, cfg) defer cleanup() diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go index 81c787b77a3..a9a9528b669 100644 --- a/cmd/kubeadm/app/images/images.go +++ b/cmd/kubeadm/app/images/images.go @@ -22,7 +22,7 @@ import ( "k8s.io/klog/v2" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" + kubeadmapiv1beta3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" ) @@ -49,7 +49,7 @@ func GetDNSImage(cfg *kubeadmapi.ClusterConfiguration) string { dnsImageRepository = cfg.DNS.ImageRepository } // Handle the renaming of the official image from "registry.k8s.io/coredns" to "registry.k8s.io/coredns/coredns - if dnsImageRepository == kubeadmapiv1beta2.DefaultImageRepository { + if dnsImageRepository == kubeadmapiv1beta3.DefaultImageRepository { dnsImageRepository = fmt.Sprintf("%s/coredns", dnsImageRepository) } // DNS uses an imageTag that corresponds to the DNS version matching the Kubernetes version diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go index 7918eba5dbc..b3d7a410b3d 100644 --- a/cmd/kubeadm/app/images/images_test.go +++ b/cmd/kubeadm/app/images/images_test.go @@ -22,7 +22,7 @@ import ( "testing" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" + kubeadmapiv1beta3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/constants" ) @@ -244,18 +244,14 @@ func TestGetDNSImage(t *testing.T) { expected: "foo.io/coredns:v1.10.0", cfg: &kubeadmapi.ClusterConfiguration{ ImageRepository: "foo.io", - DNS: kubeadmapi.DNS{ - Type: kubeadmapi.CoreDNS, - }, + DNS: kubeadmapi.DNS{}, }, }, { - expected: kubeadmapiv1beta2.DefaultImageRepository + "/coredns/coredns:v1.10.0", + expected: kubeadmapiv1beta3.DefaultImageRepository + "/coredns/coredns:v1.10.0", cfg: &kubeadmapi.ClusterConfiguration{ - ImageRepository: kubeadmapiv1beta2.DefaultImageRepository, - DNS: kubeadmapi.DNS{ - Type: kubeadmapi.CoreDNS, - }, + ImageRepository: kubeadmapiv1beta3.DefaultImageRepository, + DNS: kubeadmapi.DNS{}, }, }, { @@ -263,7 +259,6 @@ func TestGetDNSImage(t *testing.T) { cfg: &kubeadmapi.ClusterConfiguration{ ImageRepository: "foo.io", DNS: kubeadmapi.DNS{ - Type: kubeadmapi.CoreDNS, ImageMeta: kubeadmapi.ImageMeta{ ImageRepository: "foo.io/coredns", }, @@ -275,7 +270,6 @@ func TestGetDNSImage(t *testing.T) { cfg: &kubeadmapi.ClusterConfiguration{ ImageRepository: "foo.io/coredns", DNS: kubeadmapi.DNS{ - Type: kubeadmapi.CoreDNS, ImageMeta: kubeadmapi.ImageMeta{ ImageTag: "v1.11.0", }, diff --git a/cmd/kubeadm/app/util/config/cluster_test.go b/cmd/kubeadm/app/util/config/cluster_test.go index 335cea083db..9232aa5e0e5 100644 --- a/cmd/kubeadm/app/util/config/cluster_test.go +++ b/cmd/kubeadm/app/util/config/cluster_test.go @@ -37,7 +37,6 @@ import ( clienttesting "k8s.io/client-go/testing" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - kubeadmapiv1old "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" @@ -47,15 +46,6 @@ import ( var k8sVersionString = kubeadmconstants.MinimumControlPlaneVersion.String() var nodeName = "mynode" var cfgFiles = map[string][]byte{ - "InitConfiguration_v1beta2": []byte(fmt.Sprintf(` -apiVersion: %s -kind: InitConfiguration -`, kubeadmapiv1old.SchemeGroupVersion.String())), - "ClusterConfiguration_v1beta2": []byte(fmt.Sprintf(` -apiVersion: %s -kind: ClusterConfiguration -kubernetesVersion: %s -`, kubeadmapiv1old.SchemeGroupVersion.String(), k8sVersionString)), "InitConfiguration_v1beta3": []byte(fmt.Sprintf(` apiVersion: %s kind: InitConfiguration @@ -517,83 +507,6 @@ func TestGetInitConfigurationFromCluster(t *testing.T) { }, expectedError: true, }, - { - name: "valid v1beta2 - new control plane == false", // InitConfiguration composed with data from different places, with also node specific information - staticPods: []testresources.FakeStaticPod{ - { - NodeName: nodeName, - Component: kubeadmconstants.KubeAPIServer, - Annotations: map[string]string{ - kubeadmconstants.KubeAPIServerAdvertiseAddressEndpointAnnotationKey: "1.2.3.4:1234", - }, - }, - }, - configMaps: []testresources.FakeConfigMap{ - { - Name: kubeadmconstants.KubeadmConfigConfigMap, // ClusterConfiguration from kubeadm-config. - Data: map[string]string{ - kubeadmconstants.ClusterConfigurationConfigMapKey: string(cfgFiles["ClusterConfiguration_v1beta2"]), - }, - }, - { - Name: kubeadmconstants.KubeProxyConfigMap, // Kube-proxy component config from corresponding ConfigMap. - Data: map[string]string{ - kubeadmconstants.KubeProxyConfigMapKey: string(cfgFiles["Kube-proxy_componentconfig"]), - }, - }, - { - Name: kubeadmconstants.KubeletBaseConfigurationConfigMap, // Kubelet component config from corresponding ConfigMap. - Data: map[string]string{ - kubeadmconstants.KubeletBaseConfigurationConfigMapKey: string(cfgFiles["Kubelet_componentconfig"]), - }, - }, - }, - fileContents: kubeletConfFiles["configWithEmbeddedCert"], - node: &v1.Node{ - ObjectMeta: metav1.ObjectMeta{ - Name: nodeName, - Annotations: map[string]string{ - kubeadmconstants.AnnotationKubeadmCRISocket: "myCRIsocket", - }, - }, - Spec: v1.NodeSpec{ - Taints: []v1.Taint{kubeadmconstants.ControlPlaneTaint}, - }, - }, - }, - { - name: "valid v1beta2 - new control plane == true", // InitConfiguration composed with data from different places, without node specific information - staticPods: []testresources.FakeStaticPod{ - { - NodeName: nodeName, - Component: kubeadmconstants.KubeAPIServer, - Annotations: map[string]string{ - kubeadmconstants.KubeAPIServerAdvertiseAddressEndpointAnnotationKey: "1.2.3.4:1234", - }, - }, - }, - configMaps: []testresources.FakeConfigMap{ - { - Name: kubeadmconstants.KubeadmConfigConfigMap, // ClusterConfiguration from kubeadm-config. - Data: map[string]string{ - kubeadmconstants.ClusterConfigurationConfigMapKey: string(cfgFiles["ClusterConfiguration_v1beta2"]), - }, - }, - { - Name: kubeadmconstants.KubeProxyConfigMap, // Kube-proxy component config from corresponding ConfigMap. - Data: map[string]string{ - kubeadmconstants.KubeProxyConfigMapKey: string(cfgFiles["Kube-proxy_componentconfig"]), - }, - }, - { - Name: kubeadmconstants.KubeletBaseConfigurationConfigMap, // Kubelet component config from corresponding ConfigMap. - Data: map[string]string{ - kubeadmconstants.KubeletBaseConfigurationConfigMapKey: string(cfgFiles["Kubelet_componentconfig"]), - }, - }, - }, - newControlPlane: true, - }, { name: "valid v1beta3 - new control plane == false", // InitConfiguration composed with data from different places, with also node specific information staticPods: []testresources.FakeStaticPod{ diff --git a/cmd/kubeadm/app/util/config/common_test.go b/cmd/kubeadm/app/util/config/common_test.go index 9d3396ad5a6..1b56386f175 100644 --- a/cmd/kubeadm/app/util/config/common_test.go +++ b/cmd/kubeadm/app/util/config/common_test.go @@ -21,17 +21,13 @@ import ( "reflect" "testing" - "github.com/lithammer/dedent" - "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/version" apimachineryversion "k8s.io/apimachinery/pkg/version" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" - kubeadmapiv1old "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" kubeadmapiv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3" "k8s.io/kubernetes/cmd/kubeadm/app/constants" - kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" ) const KubeadmGroupName = "kubeadm.k8s.io" @@ -202,206 +198,209 @@ func TestVerifyAPIServerBindAddress(t *testing.T) { } } -func TestMigrateOldConfigFromFile(t *testing.T) { - tests := []struct { - desc string - oldCfg string - expectedKinds []string - expectErr bool - }{ - { - desc: "empty file produces empty result", - oldCfg: "", - expectErr: false, - }, - { - desc: "bad config produces error", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectErr: true, - }, - { - desc: "InitConfiguration only gets migrated", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: InitConfiguration - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectedKinds: []string{ - constants.InitConfigurationKind, - constants.ClusterConfigurationKind, - }, - expectErr: false, - }, - { - desc: "ClusterConfiguration only gets migrated", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: ClusterConfiguration - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectedKinds: []string{ - constants.InitConfigurationKind, - constants.ClusterConfigurationKind, - }, - expectErr: false, - }, - { - desc: "JoinConfiguration only gets migrated", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: JoinConfiguration - discovery: - bootstrapToken: - token: abcdef.0123456789abcdef - apiServerEndpoint: kube-apiserver:6443 - unsafeSkipCAVerification: true - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectedKinds: []string{ - constants.JoinConfigurationKind, - }, - expectErr: false, - }, - { - desc: "Init + Cluster Configurations are migrated", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: InitConfiguration - --- - apiVersion: %[1]s - kind: ClusterConfiguration - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectedKinds: []string{ - constants.InitConfigurationKind, - constants.ClusterConfigurationKind, - }, - expectErr: false, - }, - { - desc: "Init + Join Configurations are migrated", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: InitConfiguration - --- - apiVersion: %[1]s - kind: JoinConfiguration - discovery: - bootstrapToken: - token: abcdef.0123456789abcdef - apiServerEndpoint: kube-apiserver:6443 - unsafeSkipCAVerification: true - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectedKinds: []string{ - constants.InitConfigurationKind, - constants.ClusterConfigurationKind, - constants.JoinConfigurationKind, - }, - expectErr: false, - }, - { - desc: "Cluster + Join Configurations are migrated", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: ClusterConfiguration - --- - apiVersion: %[1]s - kind: JoinConfiguration - discovery: - bootstrapToken: - token: abcdef.0123456789abcdef - apiServerEndpoint: kube-apiserver:6443 - unsafeSkipCAVerification: true - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectedKinds: []string{ - constants.InitConfigurationKind, - constants.ClusterConfigurationKind, - constants.JoinConfigurationKind, - }, - expectErr: false, - }, - { - desc: "Init + Cluster + Join Configurations are migrated", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: InitConfiguration - --- - apiVersion: %[1]s - kind: ClusterConfiguration - --- - apiVersion: %[1]s - kind: JoinConfiguration - discovery: - bootstrapToken: - token: abcdef.0123456789abcdef - apiServerEndpoint: kube-apiserver:6443 - unsafeSkipCAVerification: true - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectedKinds: []string{ - constants.InitConfigurationKind, - constants.ClusterConfigurationKind, - constants.JoinConfigurationKind, - }, - expectErr: false, - }, - { - desc: "component configs are not migrated", - oldCfg: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: InitConfiguration - --- - apiVersion: %[1]s - kind: ClusterConfiguration - --- - apiVersion: %[1]s - kind: JoinConfiguration - discovery: - bootstrapToken: - token: abcdef.0123456789abcdef - apiServerEndpoint: kube-apiserver:6443 - unsafeSkipCAVerification: true - --- - apiVersion: kubeproxy.config.k8s.io/v1alpha1 - kind: KubeProxyConfiguration - --- - apiVersion: kubelet.config.k8s.io/v1beta1 - kind: KubeletConfiguration - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectedKinds: []string{ - constants.InitConfigurationKind, - constants.ClusterConfigurationKind, - constants.JoinConfigurationKind, - }, - expectErr: false, - }, - } +// TODO: re-include TestMigrateOldConfigFromFile once a new API version is added after v1beta3. +// see of how this unit test function +// looked before it was removed with the removal of v1beta2. +// func TestMigrateOldConfigFromFile(t *testing.T) { +// tests := []struct { +// desc string +// oldCfg string +// expectedKinds []string +// expectErr bool +// }{ +// { +// desc: "empty file produces empty result", +// oldCfg: "", +// expectErr: false, +// }, +// { +// desc: "bad config produces error", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectErr: true, +// }, +// { +// desc: "InitConfiguration only gets migrated", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// kind: InitConfiguration +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectedKinds: []string{ +// constants.InitConfigurationKind, +// constants.ClusterConfigurationKind, +// }, +// expectErr: false, +// }, +// { +// desc: "ClusterConfiguration only gets migrated", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// kind: ClusterConfiguration +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectedKinds: []string{ +// constants.InitConfigurationKind, +// constants.ClusterConfigurationKind, +// }, +// expectErr: false, +// }, +// { +// desc: "JoinConfiguration only gets migrated", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// kind: JoinConfiguration +// discovery: +// bootstrapToken: +// token: abcdef.0123456789abcdef +// apiServerEndpoint: kube-apiserver:6443 +// unsafeSkipCAVerification: true +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectedKinds: []string{ +// constants.JoinConfigurationKind, +// }, +// expectErr: false, +// }, +// { +// desc: "Init + Cluster Configurations are migrated", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// kind: InitConfiguration +// --- +// apiVersion: %[1]s +// kind: ClusterConfiguration +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectedKinds: []string{ +// constants.InitConfigurationKind, +// constants.ClusterConfigurationKind, +// }, +// expectErr: false, +// }, +// { +// desc: "Init + Join Configurations are migrated", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// kind: InitConfiguration +// --- +// apiVersion: %[1]s +// kind: JoinConfiguration +// discovery: +// bootstrapToken: +// token: abcdef.0123456789abcdef +// apiServerEndpoint: kube-apiserver:6443 +// unsafeSkipCAVerification: true +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectedKinds: []string{ +// constants.InitConfigurationKind, +// constants.ClusterConfigurationKind, +// constants.JoinConfigurationKind, +// }, +// expectErr: false, +// }, +// { +// desc: "Cluster + Join Configurations are migrated", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// kind: ClusterConfiguration +// --- +// apiVersion: %[1]s +// kind: JoinConfiguration +// discovery: +// bootstrapToken: +// token: abcdef.0123456789abcdef +// apiServerEndpoint: kube-apiserver:6443 +// unsafeSkipCAVerification: true +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectedKinds: []string{ +// constants.InitConfigurationKind, +// constants.ClusterConfigurationKind, +// constants.JoinConfigurationKind, +// }, +// expectErr: false, +// }, +// { +// desc: "Init + Cluster + Join Configurations are migrated", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// kind: InitConfiguration +// --- +// apiVersion: %[1]s +// kind: ClusterConfiguration +// --- +// apiVersion: %[1]s +// kind: JoinConfiguration +// discovery: +// bootstrapToken: +// token: abcdef.0123456789abcdef +// apiServerEndpoint: kube-apiserver:6443 +// unsafeSkipCAVerification: true +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectedKinds: []string{ +// constants.InitConfigurationKind, +// constants.ClusterConfigurationKind, +// constants.JoinConfigurationKind, +// }, +// expectErr: false, +// }, +// { +// desc: "component configs are not migrated", +// oldCfg: dedent.Dedent(fmt.Sprintf(` +// apiVersion: %s +// kind: InitConfiguration +// --- +// apiVersion: %[1]s +// kind: ClusterConfiguration +// --- +// apiVersion: %[1]s +// kind: JoinConfiguration +// discovery: +// bootstrapToken: +// token: abcdef.0123456789abcdef +// apiServerEndpoint: kube-apiserver:6443 +// unsafeSkipCAVerification: true +// --- +// apiVersion: kubeproxy.config.k8s.io/v1alpha1 +// kind: KubeProxyConfiguration +// --- +// apiVersion: kubelet.config.k8s.io/v1beta1 +// kind: KubeletConfiguration +// `, kubeadmapiv1old.SchemeGroupVersion.String())), +// expectedKinds: []string{ +// constants.InitConfigurationKind, +// constants.ClusterConfigurationKind, +// constants.JoinConfigurationKind, +// }, +// expectErr: false, +// }, +// } - for _, test := range tests { - t.Run(test.desc, func(t *testing.T) { - b, err := MigrateOldConfig([]byte(test.oldCfg)) - if test.expectErr { - if err == nil { - t.Fatalf("unexpected success:\n%s", b) - } - } else { - if err != nil { - t.Fatalf("unexpected failure: %v", err) - } - gvks, err := kubeadmutil.GroupVersionKindsFromBytes(b) - if err != nil { - t.Fatalf("unexpected error returned by GroupVersionKindsFromBytes: %v", err) - } - if len(gvks) != len(test.expectedKinds) { - t.Fatalf("length mismatch between resulting gvks and expected kinds:\n\tlen(gvks)=%d\n\tlen(expectedKinds)=%d", - len(gvks), len(test.expectedKinds)) - } - for _, expectedKind := range test.expectedKinds { - if !kubeadmutil.GroupVersionKindsHasKind(gvks, expectedKind) { - t.Fatalf("migration failed to produce config kind: %s", expectedKind) - } - } - } - }) - } -} +// for _, test := range tests { +// t.Run(test.desc, func(t *testing.T) { +// b, err := MigrateOldConfig([]byte(test.oldCfg)) +// if test.expectErr { +// if err == nil { +// t.Fatalf("unexpected success:\n%s", b) +// } +// } else { +// if err != nil { +// t.Fatalf("unexpected failure: %v", err) +// } +// gvks, err := kubeadmutil.GroupVersionKindsFromBytes(b) +// if err != nil { +// t.Fatalf("unexpected error returned by GroupVersionKindsFromBytes: %v", err) +// } +// if len(gvks) != len(test.expectedKinds) { +// t.Fatalf("length mismatch between resulting gvks and expected kinds:\n\tlen(gvks)=%d\n\tlen(expectedKinds)=%d", +// len(gvks), len(test.expectedKinds)) +// } +// for _, expectedKind := range test.expectedKinds { +// if !kubeadmutil.GroupVersionKindsHasKind(gvks, expectedKind) { +// t.Fatalf("migration failed to produce config kind: %s", expectedKind) +// } +// } +// } +// }) +// } +// } func TestIsKubeadmPrereleaseVersion(t *testing.T) { validVersionInfo := &apimachineryversion.Info{Major: "1", GitVersion: "v1.23.0-alpha.1"} diff --git a/cmd/kubeadm/app/util/config/initconfiguration_test.go b/cmd/kubeadm/app/util/config/initconfiguration_test.go index d242d681831..4676c515f4b 100644 --- a/cmd/kubeadm/app/util/config/initconfiguration_test.go +++ b/cmd/kubeadm/app/util/config/initconfiguration_test.go @@ -44,23 +44,6 @@ func TestLoadInitConfigurationFromFile(t *testing.T) { fileContents []byte expectErr bool }{ - { - name: "v1beta2.partial1", - fileContents: cfgFiles["InitConfiguration_v1beta2"], - }, - { - name: "v1beta2.partial2", - fileContents: cfgFiles["ClusterConfiguration_v1beta2"], - }, - { - name: "v1beta2.full", - fileContents: bytes.Join([][]byte{ - cfgFiles["InitConfiguration_v1beta2"], - cfgFiles["ClusterConfiguration_v1beta2"], - cfgFiles["Kube-proxy_componentconfig"], - cfgFiles["Kubelet_componentconfig"], - }, []byte(constants.YAMLDocumentSeparator)), - }, { name: "v1beta3.partial1", fileContents: cfgFiles["InitConfiguration_v1beta3"], diff --git a/cmd/kubeadm/app/util/config/joinconfiguration_test.go b/cmd/kubeadm/app/util/config/joinconfiguration_test.go index 1c69cb2c70a..cdc0677d782 100644 --- a/cmd/kubeadm/app/util/config/joinconfiguration_test.go +++ b/cmd/kubeadm/app/util/config/joinconfiguration_test.go @@ -17,14 +17,11 @@ limitations under the License. package config import ( - "fmt" "os" "path/filepath" "testing" "github.com/lithammer/dedent" - - kubeadmapiv1old "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" ) func TestLoadJoinConfigurationFromFile(t *testing.T) { @@ -45,29 +42,6 @@ func TestLoadJoinConfigurationFromFile(t *testing.T) { name: "empty file causes error", expectErr: true, }, - { - name: "Invalid v1beta2 causes error", - fileContents: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: JoinConfiguration - `, kubeadmapiv1old.SchemeGroupVersion.String())), - expectErr: true, - }, - { - name: "valid v1beta2 is loaded", - fileContents: dedent.Dedent(fmt.Sprintf(` - apiVersion: %s - kind: JoinConfiguration - caCertPath: /etc/kubernetes/pki/ca.crt - discovery: - bootstrapToken: - apiServerEndpoint: kube-apiserver:6443 - token: abcdef.0123456789abcdef - unsafeSkipCAVerification: true - timeout: 5m0s - tlsBootstrapToken: abcdef.0123456789abcdef - `, kubeadmapiv1old.SchemeGroupVersion.String())), - }, { name: "Invalid v1beta3 causes error", fileContents: dedent.Dedent(` diff --git a/cmd/kubeadm/app/util/config/strict/testdata/invalid_casesensitive_field.yaml b/cmd/kubeadm/app/util/config/strict/testdata/invalid_casesensitive_field.yaml index a4d622fe78a..bf15b56db23 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/invalid_casesensitive_field.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/invalid_casesensitive_field.yaml @@ -1,3 +1,3 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration ControlPlaneEndpoint: test1 diff --git a/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_clustercfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_clustercfg.yaml index 7b17191c3cb..0b6b511b7cc 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_clustercfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_clustercfg.yaml @@ -1,4 +1,4 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration controlPlaneEndpoint: test1 controlPlaneEndpoint: test2 diff --git a/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_initcfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_initcfg.yaml index 407c4593db7..5dc8d6043c2 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_initcfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_initcfg.yaml @@ -1,4 +1,4 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration bootstrapTokens: - token: "9a08jv.c0izixklcxtmnze7" diff --git a/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_joincfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_joincfg.yaml index 4c57c00a397..21aeeb3e2e2 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_joincfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/invalid_duplicate_field_joincfg.yaml @@ -1,4 +1,4 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration caCertPath: relativepath caCertPath: relativepath diff --git a/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_clustercfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_clustercfg.yaml index 624bbcf5b9d..829946f319f 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_clustercfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_clustercfg.yaml @@ -1,3 +1,3 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration unknownField: test diff --git a/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_initcfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_initcfg.yaml index 185f02ba688..f8a7a07cb09 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_initcfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_initcfg.yaml @@ -1,3 +1,3 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration unknownField: test diff --git a/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_joincfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_joincfg.yaml index 2a10e38787a..1a2e0c0832e 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_joincfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/invalid_unknown_field_joincfg.yaml @@ -1,3 +1,3 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration unknownField: test diff --git a/cmd/kubeadm/app/util/config/strict/testdata/valid_clustercfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/valid_clustercfg.yaml index 3b25a544fbd..159b321edcf 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/valid_clustercfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/valid_clustercfg.yaml @@ -1,3 +1,3 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration controlPlaneEndpoint: 202.0.100.1 diff --git a/cmd/kubeadm/app/util/config/strict/testdata/valid_initcfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/valid_initcfg.yaml index 97e95af2963..92d2be4ca3d 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/valid_initcfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/valid_initcfg.yaml @@ -1,4 +1,4 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration bootstrapTokens: - token: "9a08jv.c0izixklcxtmnze7" diff --git a/cmd/kubeadm/app/util/config/strict/testdata/valid_joincfg.yaml b/cmd/kubeadm/app/util/config/strict/testdata/valid_joincfg.yaml index cf39a0708b0..8a9f0fa815c 100644 --- a/cmd/kubeadm/app/util/config/strict/testdata/valid_joincfg.yaml +++ b/cmd/kubeadm/app/util/config/strict/testdata/valid_joincfg.yaml @@ -1,3 +1,3 @@ -apiVersion: kubeadm.k8s.io/v1beta2 +apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration caCertPath: relativepath diff --git a/cmd/kubeadm/test/cmd/init_test.go b/cmd/kubeadm/test/cmd/init_test.go index 8468c9dcf41..daa0a92a17e 100644 --- a/cmd/kubeadm/test/cmd/init_test.go +++ b/cmd/kubeadm/test/cmd/init_test.go @@ -148,14 +148,9 @@ func TestCmdInitConfig(t *testing.T) { expected: false, }, { - name: "don't allow mixed arguments v1beta2", - args: "--kubernetes-version=1.11.0 --config=testdata/init/v1beta2.yaml", - expected: false, - }, - { - name: "can load v1beta2 config", + name: "can't load v1beta2 config", args: "--config=testdata/init/v1beta2.yaml", - expected: true, + expected: false, }, { name: "can load v1beta3 config",