remove kubeadm v1beta2 support

This commit is contained in:
Paco Xu 2022-12-16 22:59:57 +08:00
parent b3056ea9bd
commit cca7a205ad
22 changed files with 233 additions and 376 deletions

View File

@ -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) {

View File

@ -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))
}

View File

@ -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
//

View File

@ -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))

View File

@ -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()

View File

@ -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

View File

@ -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",
},

View File

@ -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{

View File

@ -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 <link-to-commit-foo> 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"}

View File

@ -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"],

View File

@ -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(`

View File

@ -1,3 +1,3 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
ControlPlaneEndpoint: test1

View File

@ -1,4 +1,4 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controlPlaneEndpoint: test1
controlPlaneEndpoint: test2

View File

@ -1,4 +1,4 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
bootstrapTokens:
- token: "9a08jv.c0izixklcxtmnze7"

View File

@ -1,4 +1,4 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
caCertPath: relativepath
caCertPath: relativepath

View File

@ -1,3 +1,3 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
unknownField: test

View File

@ -1,3 +1,3 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
unknownField: test

View File

@ -1,3 +1,3 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
unknownField: test

View File

@ -1,3 +1,3 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controlPlaneEndpoint: 202.0.100.1

View File

@ -1,4 +1,4 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
bootstrapTokens:
- token: "9a08jv.c0izixklcxtmnze7"

View File

@ -1,3 +1,3 @@
apiVersion: kubeadm.k8s.io/v1beta2
apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
caCertPath: relativepath

View File

@ -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",