{// upgrades without bumping the version number not supported yet. TODO: Change this?
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.7.3",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.8.3",
},
newK8sVersion:"v1.7.3",
newK8sVersion:"v1.8.3",
expectedSkippableErrs:1,
},
{// new version must be higher than v1.7.0
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.7.3",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.8.3",
},
newK8sVersion:"v1.6.10",
expectedMandatoryErrs:1,// version must be higher than v1.7.0
newK8sVersion:"v1.7.10",
expectedMandatoryErrs:1,// version must be higher than v1.8.0
expectedSkippableErrs:1,// version shouldn't be downgraded
},
{// upgrading two minor versions in one go is not supported
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.9.0",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.10.0",
},
newK8sVersion:"v1.9.0",
newK8sVersion:"v1.10.0",
expectedMandatoryErrs:1,// can't upgrade two minor versions
expectedSkippableErrs:1,// kubelet <-> apiserver skew too large
},
{// kubeadm version must be higher than the new kube version. However, patch version skews may be forced
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.7.3",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.8.3",
},
newK8sVersion:"v1.7.5",
newK8sVersion:"v1.8.5",
expectedSkippableErrs:1,
},
{// kubeadm version must be higher than the new kube version. Trying to upgrade k8s to a higher minor version than kubeadm itself should never be supported
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.7.3",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.8.3",
},
newK8sVersion:"v1.8.0",
newK8sVersion:"v1.9.0",
expectedMandatoryErrs:1,
},
{// 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:"v1.7.3",
kubeletVersion:"v1.6.8",
kubeadmVersion:"v1.8.0",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.7.8",
kubeadmVersion:"v1.9.0",
},
newK8sVersion:"v1.8.0",
newK8sVersion:"v1.9.0",
expectedSkippableErrs:1,
},
{// experimental upgrades supported if the flag is set
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.8.0-beta.1",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.9.0-beta.1",
},
newK8sVersion:"v1.8.0-beta.1",
newK8sVersion:"v1.9.0-beta.1",
allowExperimental:true,
},
{// release candidate upgrades supported if the flag is set
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.8.0-rc.1",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.9.0-rc.1",
},
newK8sVersion:"v1.8.0-rc.1",
newK8sVersion:"v1.9.0-rc.1",
allowRCs:true,
},
{// release candidate upgrades supported if the flag is set
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.8.0-rc.1",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.9.0-rc.1",
},
newK8sVersion:"v1.8.0-rc.1",
newK8sVersion:"v1.9.0-rc.1",
allowExperimental:true,
},
{// the user should not be able to upgrade to an experimental version if they haven't opted into that
vg:&fakeVersionGetter{
clusterVersion:"v1.7.3",
kubeletVersion:"v1.7.3",
kubeadmVersion:"v1.8.0-beta.1",
clusterVersion:"v1.8.3",
kubeletVersion:"v1.8.3",
kubeadmVersion:"v1.9.0-beta.1",
},
newK8sVersion:"v1.8.0-beta.1",
newK8sVersion:"v1.9.0-beta.1",
allowRCs:true,
expectedSkippableErrs:1,
},
{// the user should not be able to upgrade to an release candidate version if they haven't opted into that