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