mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
remove kubeadm v1beta2 support
This commit is contained in:
parent
b3056ea9bd
commit
cca7a205ad
@ -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) {
|
||||
|
@ -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))
|
||||
}
|
||||
|
@ -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
|
||||
//
|
||||
|
@ -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))
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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
|
||||
|
@ -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",
|
||||
},
|
||||
|
@ -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{
|
||||
|
@ -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"}
|
||||
|
@ -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"],
|
||||
|
@ -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(`
|
||||
|
@ -1,3 +1,3 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
ControlPlaneEndpoint: test1
|
||||
|
@ -1,4 +1,4 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
controlPlaneEndpoint: test1
|
||||
controlPlaneEndpoint: test2
|
||||
|
@ -1,4 +1,4 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
bootstrapTokens:
|
||||
- token: "9a08jv.c0izixklcxtmnze7"
|
||||
|
@ -1,4 +1,4 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: JoinConfiguration
|
||||
caCertPath: relativepath
|
||||
caCertPath: relativepath
|
||||
|
@ -1,3 +1,3 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
unknownField: test
|
||||
|
@ -1,3 +1,3 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
unknownField: test
|
||||
|
@ -1,3 +1,3 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: JoinConfiguration
|
||||
unknownField: test
|
||||
|
@ -1,3 +1,3 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
controlPlaneEndpoint: 202.0.100.1
|
||||
|
@ -1,4 +1,4 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
bootstrapTokens:
|
||||
- token: "9a08jv.c0izixklcxtmnze7"
|
||||
|
@ -1,3 +1,3 @@
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: JoinConfiguration
|
||||
caCertPath: relativepath
|
||||
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user