Bump minimum kubeadm supported version to v1.12

pull/564/head
Yago Nobre 2019-01-08 13:29:23 -02:00
parent 257205d656
commit 59d2f13850
No known key found for this signature in database
GPG Key ID: 75E01A69D4DEE54C
7 changed files with 204 additions and 215 deletions

View File

@ -71,13 +71,13 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
name: "set k8s version",
expectedImageCount: defaultNumberOfImages,
expectedImageSubstrings: []string{
":v1.12.1",
constants.CurrentKubernetesVersion.String(),
},
configContents: []byte(dedent.Dedent(`
configContents: []byte(dedent.Dedent(fmt.Sprintf(`
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.12.1
`)),
kubernetesVersion: %s
`, constants.CurrentKubernetesVersion))),
},
{
name: "use coredns",

View File

@ -40,7 +40,7 @@ kind: KubeletConfiguration
}
func TestGetFromConfigMap(t *testing.T) {
k8sVersion := version.MustParseGeneric("v1.12.0")
k8sVersion := version.MustParseGeneric(kubeadmconstants.CurrentKubernetesVersion.String())
var tests = []struct {
name string

View File

@ -387,18 +387,16 @@ var (
ControlPlaneComponents = []string{KubeAPIServer, KubeControllerManager, KubeScheduler}
// MinimumControlPlaneVersion specifies the minimum control plane version kubeadm can deploy
MinimumControlPlaneVersion = version.MustParseSemantic("v1.12.0")
MinimumControlPlaneVersion = version.MustParseSemantic("v1.13.0")
// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
MinimumKubeletVersion = version.MustParseSemantic("v1.12.0")
MinimumKubeletVersion = version.MustParseSemantic("v1.13.0")
// CurrentKubernetesVersion specifies current Kubernetes version supported by kubeadm
CurrentKubernetesVersion = version.MustParseSemantic("v1.13.0")
CurrentKubernetesVersion = version.MustParseSemantic("v1.14.0")
// SupportedEtcdVersion lists officially supported etcd versions with corresponding Kubernetes releases
SupportedEtcdVersion = map[uint8]string{
10: "3.1.12",
11: "3.2.18",
12: "3.2.24",
13: "3.2.24",
14: "3.3.10",

View File

@ -159,16 +159,6 @@ func TestEtcdSupportedVersion(t *testing.T) {
expectedVersion: nil,
expectedError: errors.New("Unsupported or unknown Kubernetes version(1.99.0)"),
},
{
kubernetesVersion: "1.10.2",
expectedVersion: version.MustParseSemantic("3.1.12"),
expectedError: nil,
},
{
kubernetesVersion: "1.11.0",
expectedVersion: version.MustParseSemantic("3.2.18"),
expectedError: nil,
},
{
kubernetesVersion: "1.12.1",
expectedVersion: version.MustParseSemantic("3.2.24"),

View File

@ -25,8 +25,9 @@ import (
"github.com/coreos/etcd/clientv3"
"github.com/pkg/errors"
apps "k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/version"
versionutil "k8s.io/apimachinery/pkg/util/version"
clientsetfake "k8s.io/client-go/kubernetes/fake"
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
@ -121,6 +122,10 @@ func (f fakeEtcdClient) RemoveMember(id uint64) ([]etcdutil.Member, error) {
return []etcdutil.Member{}, nil
}
func getEtcdVersion(v *version.Version) string {
return constants.SupportedEtcdVersion[uint8(v.Minor())]
}
func TestGetAvailableUpgrades(t *testing.T) {
etcdClient := fakeEtcdClient{}
tests := []struct {
@ -137,12 +142,12 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "no action needed, already up-to-date",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.3",
kubeletVersion: "v1.10.3",
kubeadmVersion: "v1.10.3",
clusterVersion: constants.MinimumControlPlaneVersion.String(),
kubeletVersion: constants.MinimumKubeletVersion.String(),
kubeadmVersion: constants.MinimumControlPlaneVersion.String(),
stablePatchVersion: "v1.10.3",
stableVersion: "v1.10.3",
stablePatchVersion: constants.MinimumControlPlaneVersion.String(),
stableVersion: constants.MinimumControlPlaneVersion.String(),
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "v1.0.6",
@ -155,35 +160,35 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "simple patch version upgrade",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.1",
kubeletVersion: "v1.10.1", // the kubelet are on the same version as the control plane
kubeadmVersion: "v1.10.2",
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(1).String(), // the kubelet are on the same version as the control plane
kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
stablePatchVersion: "v1.10.3",
stableVersion: "v1.10.3",
stablePatchVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
stableVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
dnsType: kubeadmapi.CoreDNS,
expectedUpgrades: []Upgrade{
{
Description: "version in the v1.10 series",
Description: fmt.Sprintf("version in the v%d.%d series", constants.MinimumControlPlaneVersion.Major(), constants.MinimumControlPlaneVersion.Minor()),
Before: ClusterState{
KubeVersion: "v1.10.1",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
KubeletVersions: map[string]uint16{
"v1.10.1": 1,
constants.MinimumKubeletVersion.WithPatch(1).String(): 1,
},
KubeadmVersion: "v1.10.2",
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.10.3",
KubeadmVersion: "v1.10.3",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.1.12",
EtcdVersion: getEtcdVersion(constants.MinimumControlPlaneVersion),
},
},
},
@ -194,35 +199,35 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "no version provided to offline version getter does not change behavior",
vg: NewOfflineVersionGetter(&fakeVersionGetter{
clusterVersion: "v1.10.1",
kubeletVersion: "v1.10.1", // the kubelet are on the same version as the control plane
kubeadmVersion: "v1.10.2",
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(1).String(), // the kubelet are on the same version as the control plane
kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
stablePatchVersion: "v1.10.3",
stableVersion: "v1.10.3",
stablePatchVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
stableVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
}, ""),
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
dnsType: kubeadmapi.CoreDNS,
expectedUpgrades: []Upgrade{
{
Description: "version in the v1.10 series",
Description: fmt.Sprintf("version in the v%d.%d series", constants.MinimumControlPlaneVersion.Major(), constants.MinimumControlPlaneVersion.Minor()),
Before: ClusterState{
KubeVersion: "v1.10.1",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
KubeletVersions: map[string]uint16{
"v1.10.1": 1,
constants.MinimumKubeletVersion.WithPatch(1).String(): 1,
},
KubeadmVersion: "v1.10.2",
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.10.3",
KubeadmVersion: "v1.10.3",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.1.12",
EtcdVersion: getEtcdVersion(constants.MinimumControlPlaneVersion),
},
},
},
@ -233,12 +238,12 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "minor version upgrade only",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.1",
kubeletVersion: "v1.10.1", // the kubelet are on the same version as the control plane
kubeadmVersion: "v1.11.0",
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(1).String(), // the kubelet are on the same version as the control plane
kubeadmVersion: constants.CurrentKubernetesVersion.String(),
stablePatchVersion: "v1.10.1",
stableVersion: "v1.11.0",
stablePatchVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
stableVersion: constants.CurrentKubernetesVersion.String(),
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
@ -247,21 +252,21 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
Description: "stable version",
Before: ClusterState{
KubeVersion: "v1.10.1",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
KubeletVersions: map[string]uint16{
"v1.10.1": 1,
constants.MinimumKubeletVersion.WithPatch(1).String(): 1,
},
KubeadmVersion: "v1.11.0",
KubeadmVersion: constants.CurrentKubernetesVersion.String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.11.0",
KubeadmVersion: "v1.11.0",
KubeVersion: constants.CurrentKubernetesVersion.String(),
KubeadmVersion: constants.CurrentKubernetesVersion.String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.18",
EtcdVersion: getEtcdVersion(constants.CurrentKubernetesVersion),
},
},
},
@ -272,55 +277,55 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "both minor version upgrade and patch version upgrade available",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.3",
kubeletVersion: "v1.10.3", // the kubelet are on the same version as the control plane
kubeadmVersion: "v1.10.5",
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(), // the kubelet are on the same version as the control plane
kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
stablePatchVersion: "v1.10.5",
stableVersion: "v1.11.1",
stablePatchVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
stableVersion: constants.CurrentKubernetesVersion.WithPatch(1).String(),
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
dnsType: kubeadmapi.CoreDNS,
expectedUpgrades: []Upgrade{
{
Description: "version in the v1.10 series",
Description: fmt.Sprintf("version in the v%d.%d series", constants.MinimumControlPlaneVersion.Major(), constants.MinimumControlPlaneVersion.Minor()),
Before: ClusterState{
KubeVersion: "v1.10.3",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
KubeletVersions: map[string]uint16{
"v1.10.3": 1,
constants.MinimumKubeletVersion.WithPatch(3).String(): 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.10.5",
KubeadmVersion: "v1.10.5", // Note: The kubeadm version mustn't be "downgraded" here
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(), // Note: The kubeadm version mustn't be "downgraded" here
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.1.12",
EtcdVersion: getEtcdVersion(constants.MinimumControlPlaneVersion),
},
},
{
Description: "stable version",
Before: ClusterState{
KubeVersion: "v1.10.3",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
KubeletVersions: map[string]uint16{
"v1.10.3": 1,
constants.MinimumKubeletVersion.WithPatch(3).String(): 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.11.1",
KubeadmVersion: "v1.11.1",
KubeVersion: constants.CurrentKubernetesVersion.WithPatch(1).String(),
KubeadmVersion: constants.CurrentKubernetesVersion.WithPatch(1).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.18",
EtcdVersion: getEtcdVersion(constants.CurrentKubernetesVersion),
},
},
},
@ -350,13 +355,13 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "upgrade to an unstable version should be supported",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.5",
kubeletVersion: "v1.10.5",
kubeadmVersion: "v1.10.5",
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(5).String(),
kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
stablePatchVersion: "v1.10.5",
stableVersion: "v1.10.5",
latestVersion: "v1.11.0-alpha.2",
stablePatchVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
stableVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
latestVersion: constants.CurrentKubernetesVersion.WithPreRelease("alpha.2").String(),
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
@ -365,21 +370,21 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
Description: "experimental version",
Before: ClusterState{
KubeVersion: "v1.10.5",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
KubeletVersions: map[string]uint16{
"v1.10.5": 1,
constants.MinimumControlPlaneVersion.WithPatch(5).String(): 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.11.0-alpha.2",
KubeadmVersion: "v1.11.0-alpha.2",
KubeVersion: constants.CurrentKubernetesVersion.WithPreRelease("alpha.2").String(),
KubeadmVersion: constants.CurrentKubernetesVersion.WithPreRelease("alpha.2").String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.18",
EtcdVersion: getEtcdVersion(constants.CurrentKubernetesVersion),
},
},
},
@ -390,13 +395,13 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "upgrade from an unstable version to an unstable version should be supported",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.0-alpha.1",
kubeletVersion: "v1.10.5",
kubeadmVersion: "v1.10.5",
clusterVersion: constants.CurrentKubernetesVersion.WithPreRelease("alpha.1").String(),
kubeletVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
stablePatchVersion: "v1.10.5",
stableVersion: "v1.10.5",
latestVersion: "v1.11.0-alpha.2",
stablePatchVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
stableVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
latestVersion: constants.CurrentKubernetesVersion.WithPreRelease("alpha.2").String(),
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
@ -405,21 +410,21 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
Description: "experimental version",
Before: ClusterState{
KubeVersion: "v1.11.0-alpha.1",
KubeVersion: constants.CurrentKubernetesVersion.WithPreRelease("alpha.1").String(),
KubeletVersions: map[string]uint16{
"v1.10.5": 1,
constants.MinimumControlPlaneVersion.WithPatch(5).String(): 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.11.0-alpha.2",
KubeadmVersion: "v1.11.0-alpha.2",
KubeVersion: constants.CurrentKubernetesVersion.WithPreRelease("alpha.2").String(),
KubeadmVersion: constants.CurrentKubernetesVersion.WithPreRelease("alpha.2").String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.18",
EtcdVersion: getEtcdVersion(constants.CurrentKubernetesVersion),
},
},
},
@ -430,14 +435,14 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "v1.X.0-alpha.0 should be ignored",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.5",
kubeletVersion: "v1.10.5",
kubeadmVersion: "v1.10.5",
clusterVersion: "v1.11.5",
kubeletVersion: "v1.11.5",
kubeadmVersion: "v1.11.5",
stablePatchVersion: "v1.10.5",
stableVersion: "v1.10.5",
latestDevBranchVersion: "v1.11.0-beta.1",
latestVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.0").String(),
stablePatchVersion: "v1.11.5",
stableVersion: "v1.11.5",
latestDevBranchVersion: "v1.13.0-beta.1",
latestVersion: "v1.12.0-alpha.0",
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
@ -446,21 +451,21 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
Description: "experimental version",
Before: ClusterState{
KubeVersion: "v1.10.5",
KubeVersion: "v1.11.5",
KubeletVersions: map[string]uint16{
"v1.10.5": 1,
"v1.11.5": 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: "v1.11.5",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.11.0-beta.1",
KubeadmVersion: "v1.11.0-beta.1",
KubeVersion: "v1.13.0-beta.1",
KubeadmVersion: "v1.13.0-beta.1",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.18",
EtcdVersion: "3.2.24",
},
},
},
@ -471,14 +476,14 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "upgrade to an RC version should be supported",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.5",
kubeletVersion: "v1.10.5",
kubeadmVersion: "v1.10.5",
clusterVersion: "v1.11.5",
kubeletVersion: "v1.11.5",
kubeadmVersion: "v1.11.5",
stablePatchVersion: "v1.10.5",
stableVersion: "v1.10.5",
latestDevBranchVersion: "v1.11.0-rc.1",
latestVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.1").String(),
stablePatchVersion: "v1.11.5",
stableVersion: "v1.11.5",
latestDevBranchVersion: "v1.13.0-rc.1",
latestVersion: "v1.12.0-alpha.1",
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
@ -487,21 +492,21 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
Description: "release candidate version",
Before: ClusterState{
KubeVersion: "v1.10.5",
KubeVersion: "v1.11.5",
KubeletVersions: map[string]uint16{
"v1.10.5": 1,
"v1.11.5": 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: "v1.11.5",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.11.0-rc.1",
KubeadmVersion: "v1.11.0-rc.1",
KubeVersion: "v1.13.0-rc.1",
KubeadmVersion: "v1.13.0-rc.1",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.18",
EtcdVersion: "3.2.24",
},
},
},
@ -512,14 +517,14 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "it is possible (but very uncommon) that the latest version from the previous branch is an rc and the current latest version is alpha.0. In that case, show the RC",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.5",
kubeletVersion: "v1.10.5",
kubeadmVersion: "v1.10.5",
clusterVersion: "v1.11.5",
kubeletVersion: "v1.11.5",
kubeadmVersion: "v1.11.5",
stablePatchVersion: "v1.10.5",
stableVersion: "v1.10.5",
latestDevBranchVersion: "v1.11.6-rc.1",
latestVersion: constants.MinimumControlPlaneVersion.WithPatch(1).WithPreRelease("alpha.0").String(),
stablePatchVersion: "v1.11.5",
stableVersion: "v1.11.5",
latestDevBranchVersion: "v1.13.6-rc.1",
latestVersion: "v1.12.1-alpha.0",
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
@ -528,21 +533,21 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
Description: "experimental version", // Note that this is considered an experimental version in this uncommon scenario
Before: ClusterState{
KubeVersion: "v1.10.5",
KubeVersion: "v1.11.5",
KubeletVersions: map[string]uint16{
"v1.10.5": 1,
"v1.11.5": 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: "v1.11.5",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.11.6-rc.1",
KubeadmVersion: "v1.11.6-rc.1",
KubeVersion: "v1.13.6-rc.1",
KubeadmVersion: "v1.13.6-rc.1",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.18",
EtcdVersion: "3.2.24",
},
},
},
@ -553,14 +558,14 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "upgrade to an RC version should be supported. There may also be an even newer unstable version.",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.5",
kubeletVersion: "v1.10.5",
kubeadmVersion: "v1.10.5",
clusterVersion: "v1.11.5",
kubeletVersion: "v1.11.5",
kubeadmVersion: "v1.11.5",
stablePatchVersion: "v1.10.5",
stableVersion: "v1.10.5",
latestDevBranchVersion: "v1.11.0-rc.1",
latestVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.2").String(),
stablePatchVersion: "v1.11.5",
stableVersion: "v1.11.5",
latestDevBranchVersion: "v1.13.0-rc.1",
latestVersion: "v1.12.0-alpha.2",
},
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
@ -569,38 +574,38 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
Description: "release candidate version",
Before: ClusterState{
KubeVersion: "v1.10.5",
KubeVersion: "v1.11.5",
KubeletVersions: map[string]uint16{
"v1.10.5": 1,
"v1.11.5": 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: "v1.11.5",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: "v1.11.0-rc.1",
KubeadmVersion: "v1.11.0-rc.1",
KubeVersion: "v1.13.0-rc.1",
KubeadmVersion: "v1.13.0-rc.1",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.18",
EtcdVersion: "3.2.24",
},
},
{
Description: "experimental version",
Before: ClusterState{
KubeVersion: "v1.10.5",
KubeVersion: "v1.11.5",
KubeletVersions: map[string]uint16{
"v1.10.5": 1,
"v1.11.5": 1,
},
KubeadmVersion: "v1.10.5",
KubeadmVersion: "v1.11.5",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.2").String(),
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.2").String(),
KubeVersion: "v1.12.0-alpha.2",
KubeadmVersion: "v1.12.0-alpha.2",
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.24",
@ -615,11 +620,11 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "Upgrades with external etcd with mismatched versions should not be allowed.",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.3",
kubeletVersion: "v1.10.3",
kubeadmVersion: "v1.10.3",
stablePatchVersion: "v1.10.3",
stableVersion: "v1.10.3",
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
stablePatchVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
stableVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
},
allowRCs: false,
allowExperimental: false,
@ -630,33 +635,33 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "offline version getter",
vg: NewOfflineVersionGetter(&fakeVersionGetter{
clusterVersion: "v1.11.1",
kubeletVersion: "v1.11.0",
kubeadmVersion: "v1.11.1",
}, constants.MinimumControlPlaneVersion.WithPatch(1).String()),
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
kubeletVersion: constants.MinimumKubeletVersion.String(),
kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
}, constants.CurrentKubernetesVersion.WithPatch(1).String()),
etcdClient: etcdClient,
beforeDNSType: kubeadmapi.CoreDNS,
beforeDNSVersion: "1.0.6",
dnsType: kubeadmapi.CoreDNS,
expectedUpgrades: []Upgrade{
{
Description: "version in the v1.11 series",
Description: fmt.Sprintf("version in the v%d.%d series", constants.MinimumControlPlaneVersion.Major(), constants.MinimumControlPlaneVersion.Minor()),
Before: ClusterState{
KubeVersion: "v1.11.1",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
KubeletVersions: map[string]uint16{
"v1.11.0": 1,
constants.MinimumKubeletVersion.String(): 1,
},
KubeadmVersion: "v1.11.1",
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.0.6",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
KubeVersion: constants.CurrentKubernetesVersion.WithPatch(1).String(),
KubeadmVersion: constants.CurrentKubernetesVersion.WithPatch(1).String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.24",
EtcdVersion: getEtcdVersion(constants.CurrentKubernetesVersion),
},
},
},
@ -664,12 +669,12 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "kubedns to coredns",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.2",
kubeletVersion: "v1.11.2", // the kubelet are on the same version as the control plane
kubeadmVersion: constants.MinimumControlPlaneVersion.String(),
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(2).String(), // the kubelet are on the same version as the control plane
kubeadmVersion: constants.CurrentKubernetesVersion.String(),
stablePatchVersion: constants.MinimumControlPlaneVersion.String(),
stableVersion: constants.MinimumControlPlaneVersion.String(),
stablePatchVersion: constants.CurrentKubernetesVersion.String(),
stableVersion: constants.CurrentKubernetesVersion.String(),
},
etcdClient: etcdClient,
beforeDNSType: kubeadmapi.KubeDNS,
@ -677,23 +682,23 @@ func TestGetAvailableUpgrades(t *testing.T) {
dnsType: kubeadmapi.CoreDNS,
expectedUpgrades: []Upgrade{
{
Description: "version in the v1.11 series",
Description: fmt.Sprintf("version in the v%d.%d series", constants.MinimumControlPlaneVersion.Major(), constants.MinimumControlPlaneVersion.Minor()),
Before: ClusterState{
KubeVersion: "v1.11.2",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
KubeletVersions: map[string]uint16{
"v1.11.2": 1,
constants.MinimumControlPlaneVersion.WithPatch(2).String(): 1,
},
KubeadmVersion: constants.MinimumControlPlaneVersion.String(),
KubeadmVersion: constants.CurrentKubernetesVersion.String(),
DNSType: kubeadmapi.KubeDNS,
DNSVersion: "1.14.7",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: constants.MinimumControlPlaneVersion.String(),
KubeadmVersion: constants.MinimumControlPlaneVersion.String(),
KubeVersion: constants.CurrentKubernetesVersion.String(),
KubeadmVersion: constants.CurrentKubernetesVersion.String(),
DNSType: kubeadmapi.CoreDNS,
DNSVersion: "1.3.1",
EtcdVersion: "3.2.24",
EtcdVersion: getEtcdVersion(constants.CurrentKubernetesVersion),
},
},
},
@ -701,12 +706,12 @@ func TestGetAvailableUpgrades(t *testing.T) {
{
name: "keep coredns",
vg: &fakeVersionGetter{
clusterVersion: "v1.11.2",
kubeletVersion: "v1.11.2", // the kubelet are on the same version as the control plane
kubeadmVersion: constants.MinimumControlPlaneVersion.String(),
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(2).String(), // the kubelet are on the same version as the control plane
kubeadmVersion: constants.CurrentKubernetesVersion.String(),
stablePatchVersion: constants.MinimumControlPlaneVersion.String(),
stableVersion: constants.MinimumControlPlaneVersion.String(),
stablePatchVersion: constants.CurrentKubernetesVersion.String(),
stableVersion: constants.CurrentKubernetesVersion.String(),
},
etcdClient: etcdClient,
beforeDNSType: kubeadmapi.KubeDNS,
@ -714,23 +719,23 @@ func TestGetAvailableUpgrades(t *testing.T) {
dnsType: kubeadmapi.KubeDNS,
expectedUpgrades: []Upgrade{
{
Description: "version in the v1.11 series",
Description: fmt.Sprintf("version in the v%d.%d series", constants.MinimumControlPlaneVersion.Major(), constants.MinimumControlPlaneVersion.Minor()),
Before: ClusterState{
KubeVersion: "v1.11.2",
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
KubeletVersions: map[string]uint16{
"v1.11.2": 1,
constants.MinimumControlPlaneVersion.WithPatch(2).String(): 1,
},
KubeadmVersion: constants.MinimumControlPlaneVersion.String(),
KubeadmVersion: constants.CurrentKubernetesVersion.String(),
DNSType: kubeadmapi.KubeDNS,
DNSVersion: "1.14.7",
EtcdVersion: "3.1.12",
},
After: ClusterState{
KubeVersion: constants.MinimumControlPlaneVersion.String(),
KubeadmVersion: constants.MinimumControlPlaneVersion.String(),
KubeVersion: constants.CurrentKubernetesVersion.String(),
KubeadmVersion: constants.CurrentKubernetesVersion.String(),
DNSType: kubeadmapi.KubeDNS,
DNSVersion: "1.14.13",
EtcdVersion: "3.2.24",
EtcdVersion: getEtcdVersion(constants.CurrentKubernetesVersion),
},
},
},
@ -874,10 +879,6 @@ func TestGetBranchFromVersion(t *testing.T) {
version: "v1.9.0-rc.1",
expectedVersion: "1.9",
},
{
version: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
expectedVersion: "1.12",
},
{
version: "v1.11.0-alpha.0",
expectedVersion: "1.11",

View File

@ -69,14 +69,14 @@ func TestEnforceVersionPolicies(t *testing.T) {
newK8sVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
},
{
name: "new version must be higher than v1.10.0",
name: "new version must be higher than v1.12.0",
vg: &fakeVersionGetter{
clusterVersion: "v1.10.3",
kubeletVersion: "v1.10.3",
kubeadmVersion: "v1.10.3",
clusterVersion: "v1.12.3",
kubeletVersion: "v1.12.3",
kubeadmVersion: "v1.12.3",
},
newK8sVersion: "v1.9.10",
expectedMandatoryErrs: 1, // version must be higher than v1.10.0
newK8sVersion: "v1.11.10",
expectedMandatoryErrs: 1, // version must be higher than v1.12.0
expectedSkippableErrs: 1, // can't upgrade old k8s with newer kubeadm
},
{
@ -93,9 +93,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
{
name: "downgrading two minor versions in one go is not supported",
vg: &fakeVersionGetter{
clusterVersion: "v1.14.3",
kubeletVersion: "v1.14.3",
kubeadmVersion: "v1.14.0",
clusterVersion: "v1.15.3",
kubeletVersion: "v1.15.3",
kubeadmVersion: "v1.15.0",
},
newK8sVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
expectedMandatoryErrs: 1, // can't downgrade two minor versions
@ -125,7 +125,7 @@ func TestEnforceVersionPolicies(t *testing.T) {
name: "the maximum skew between the cluster version and the kubelet versions should be one minor version. This may be forced through though.",
vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: "v1.11.8",
kubeletVersion: "v1.12.8",
kubeadmVersion: constants.CurrentKubernetesVersion.String(),
},
newK8sVersion: constants.CurrentKubernetesVersion.String(),

View File

@ -69,7 +69,7 @@ func TestUploadConfiguration(t *testing.T) {
AdvertiseAddress: "1.2.3.4",
},
ClusterConfiguration: kubeadmapiv1beta1.ClusterConfiguration{
KubernetesVersion: "v1.12.10",
KubernetesVersion: kubeadmconstants.MinimumControlPlaneVersion.WithPatch(10).String(),
},
BootstrapTokens: []kubeadmapiv1beta1.BootstrapToken{
{