mirror of https://github.com/k3s-io/k3s
kubeadm - set CoreDNS FeatureGate to true by default
parent
9a868b387d
commit
08ba47b237
|
@ -28,7 +28,6 @@ import (
|
||||||
|
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
|
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/features"
|
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/phases/upgrade"
|
"k8s.io/kubernetes/cmd/kubeadm/app/phases/upgrade"
|
||||||
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
|
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
|
||||||
etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd"
|
etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd"
|
||||||
|
@ -118,19 +117,19 @@ func RunPlan(flags *planFlags) error {
|
||||||
|
|
||||||
// Compute which upgrade possibilities there are
|
// Compute which upgrade possibilities there are
|
||||||
glog.V(1).Infof("[upgrade/plan] computing upgrade possibilities")
|
glog.V(1).Infof("[upgrade/plan] computing upgrade possibilities")
|
||||||
availUpgrades, err := upgrade.GetAvailableUpgrades(upgradeVars.versionGetter, flags.parent.allowExperimentalUpgrades, flags.parent.allowRCUpgrades, etcdClient, upgradeVars.cfg.FeatureGates)
|
availUpgrades, err := upgrade.GetAvailableUpgrades(upgradeVars.versionGetter, flags.parent.allowExperimentalUpgrades, flags.parent.allowRCUpgrades, etcdClient, upgradeVars.cfg.FeatureGates, upgradeVars.client)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("[upgrade/versions] FATAL: %v", err)
|
return fmt.Errorf("[upgrade/versions] FATAL: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tell the user which upgrades are available
|
// Tell the user which upgrades are available
|
||||||
printAvailableUpgrades(availUpgrades, os.Stdout, upgradeVars.cfg.FeatureGates, isExternalEtcd)
|
printAvailableUpgrades(availUpgrades, os.Stdout, isExternalEtcd)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// printAvailableUpgrades prints a UX-friendly overview of what versions are available to upgrade to
|
// printAvailableUpgrades prints a UX-friendly overview of what versions are available to upgrade to
|
||||||
// TODO look into columnize or some other formatter when time permits instead of using the tabwriter
|
// TODO look into columnize or some other formatter when time permits instead of using the tabwriter
|
||||||
func printAvailableUpgrades(upgrades []upgrade.Upgrade, w io.Writer, featureGates map[string]bool, isExternalEtcd bool) {
|
func printAvailableUpgrades(upgrades []upgrade.Upgrade, w io.Writer, isExternalEtcd bool) {
|
||||||
|
|
||||||
// Return quickly if no upgrades can be made
|
// Return quickly if no upgrades can be made
|
||||||
if len(upgrades) == 0 {
|
if len(upgrades) == 0 {
|
||||||
|
@ -182,11 +181,37 @@ func printAvailableUpgrades(upgrades []upgrade.Upgrade, w io.Writer, featureGate
|
||||||
fmt.Fprintf(tabw, "Controller Manager\t%s\t%s\n", upgrade.Before.KubeVersion, upgrade.After.KubeVersion)
|
fmt.Fprintf(tabw, "Controller Manager\t%s\t%s\n", upgrade.Before.KubeVersion, upgrade.After.KubeVersion)
|
||||||
fmt.Fprintf(tabw, "Scheduler\t%s\t%s\n", upgrade.Before.KubeVersion, upgrade.After.KubeVersion)
|
fmt.Fprintf(tabw, "Scheduler\t%s\t%s\n", upgrade.Before.KubeVersion, upgrade.After.KubeVersion)
|
||||||
fmt.Fprintf(tabw, "Kube Proxy\t%s\t%s\n", upgrade.Before.KubeVersion, upgrade.After.KubeVersion)
|
fmt.Fprintf(tabw, "Kube Proxy\t%s\t%s\n", upgrade.Before.KubeVersion, upgrade.After.KubeVersion)
|
||||||
if features.Enabled(featureGates, features.CoreDNS) {
|
|
||||||
fmt.Fprintf(tabw, "CoreDNS\t%s\t%s\n", upgrade.Before.DNSVersion, upgrade.After.DNSVersion)
|
// TODO There is currently no way to cleanly output upgrades that involve adding, removing, or changing components
|
||||||
} else {
|
// https://github.com/kubernetes/kubeadm/issues/810 was created to track addressing this.
|
||||||
fmt.Fprintf(tabw, "Kube DNS\t%s\t%s\n", upgrade.Before.DNSVersion, upgrade.After.DNSVersion)
|
printCoreDNS, printKubeDNS := false, false
|
||||||
|
coreDNSBeforeVersion, coreDNSAfterVersion, kubeDNSBeforeVersion, kubeDNSAfterVersion := "", "", "", ""
|
||||||
|
|
||||||
|
switch upgrade.Before.DNSType {
|
||||||
|
case constants.CoreDNS:
|
||||||
|
printCoreDNS = true
|
||||||
|
coreDNSBeforeVersion = upgrade.Before.DNSVersion
|
||||||
|
case constants.KubeDNS:
|
||||||
|
printKubeDNS = true
|
||||||
|
kubeDNSBeforeVersion = upgrade.Before.DNSVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch upgrade.After.DNSType {
|
||||||
|
case constants.CoreDNS:
|
||||||
|
printCoreDNS = true
|
||||||
|
coreDNSAfterVersion = upgrade.After.DNSVersion
|
||||||
|
case constants.KubeDNS:
|
||||||
|
printKubeDNS = true
|
||||||
|
kubeDNSAfterVersion = upgrade.After.DNSVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
if printCoreDNS {
|
||||||
|
fmt.Fprintf(tabw, "CoreDNS\t%s\t%s\n", coreDNSBeforeVersion, coreDNSAfterVersion)
|
||||||
|
}
|
||||||
|
if printKubeDNS {
|
||||||
|
fmt.Fprintf(tabw, "Kube DNS\t%s\t%s\n", kubeDNSBeforeVersion, kubeDNSAfterVersion)
|
||||||
|
}
|
||||||
|
|
||||||
if !isExternalEtcd {
|
if !isExternalEtcd {
|
||||||
fmt.Fprintf(tabw, "Etcd\t%s\t%s\n", upgrade.Before.EtcdVersion, upgrade.After.EtcdVersion)
|
fmt.Fprintf(tabw, "Etcd\t%s\t%s\n", upgrade.Before.EtcdVersion, upgrade.After.EtcdVersion)
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,6 @@ func TestSortedSliceFromStringIntMap(t *testing.T) {
|
||||||
|
|
||||||
// TODO Think about modifying this test to be less verbose checking b/c it can be brittle.
|
// TODO Think about modifying this test to be less verbose checking b/c it can be brittle.
|
||||||
func TestPrintAvailableUpgrades(t *testing.T) {
|
func TestPrintAvailableUpgrades(t *testing.T) {
|
||||||
featureGates := make(map[string]bool)
|
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
name string
|
name string
|
||||||
upgrades []upgrade.Upgrade
|
upgrades []upgrade.Upgrade
|
||||||
|
@ -92,12 +91,14 @@ func TestPrintAvailableUpgrades(t *testing.T) {
|
||||||
"v1.8.1": 1,
|
"v1.8.1": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.2",
|
KubeadmVersion: "v1.8.2",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
After: upgrade.ClusterState{
|
After: upgrade.ClusterState{
|
||||||
KubeVersion: "v1.8.3",
|
KubeVersion: "v1.8.3",
|
||||||
KubeadmVersion: "v1.8.3",
|
KubeadmVersion: "v1.8.3",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
|
@ -138,12 +139,14 @@ _____________________________________________________________________
|
||||||
"v1.8.3": 1,
|
"v1.8.3": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.0",
|
KubeadmVersion: "v1.9.0",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
After: upgrade.ClusterState{
|
After: upgrade.ClusterState{
|
||||||
KubeVersion: "v1.9.0",
|
KubeVersion: "v1.9.0",
|
||||||
KubeadmVersion: "v1.9.0",
|
KubeadmVersion: "v1.9.0",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.10",
|
DNSVersion: "1.14.10",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
|
@ -182,12 +185,14 @@ _____________________________________________________________________
|
||||||
"v1.8.3": 1,
|
"v1.8.3": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.3",
|
KubeadmVersion: "v1.8.3",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
After: upgrade.ClusterState{
|
After: upgrade.ClusterState{
|
||||||
KubeVersion: "v1.8.5",
|
KubeVersion: "v1.8.5",
|
||||||
KubeadmVersion: "v1.8.3",
|
KubeadmVersion: "v1.8.3",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
|
@ -200,12 +205,14 @@ _____________________________________________________________________
|
||||||
"v1.8.3": 1,
|
"v1.8.3": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.3",
|
KubeadmVersion: "v1.8.3",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
After: upgrade.ClusterState{
|
After: upgrade.ClusterState{
|
||||||
KubeVersion: "v1.9.0",
|
KubeVersion: "v1.9.0",
|
||||||
KubeadmVersion: "v1.9.0",
|
KubeadmVersion: "v1.9.0",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.10",
|
DNSVersion: "1.14.10",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
|
@ -266,12 +273,14 @@ _____________________________________________________________________
|
||||||
"v1.8.5": 1,
|
"v1.8.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.8.5",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
After: upgrade.ClusterState{
|
After: upgrade.ClusterState{
|
||||||
KubeVersion: "v1.9.0-beta.1",
|
KubeVersion: "v1.9.0-beta.1",
|
||||||
KubeadmVersion: "v1.9.0-beta.1",
|
KubeadmVersion: "v1.9.0-beta.1",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.10",
|
DNSVersion: "1.14.10",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
|
@ -312,12 +321,14 @@ _____________________________________________________________________
|
||||||
"v1.8.5": 1,
|
"v1.8.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.8.5",
|
KubeadmVersion: "v1.8.5",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
After: upgrade.ClusterState{
|
After: upgrade.ClusterState{
|
||||||
KubeVersion: "v1.9.0-rc.1",
|
KubeVersion: "v1.9.0-rc.1",
|
||||||
KubeadmVersion: "v1.9.0-rc.1",
|
KubeadmVersion: "v1.9.0-rc.1",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.10",
|
DNSVersion: "1.14.10",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
|
@ -359,12 +370,14 @@ _____________________________________________________________________
|
||||||
"v1.9.3": 2,
|
"v1.9.3": 2,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.2",
|
KubeadmVersion: "v1.9.2",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
After: upgrade.ClusterState{
|
After: upgrade.ClusterState{
|
||||||
KubeVersion: "v1.9.3",
|
KubeVersion: "v1.9.3",
|
||||||
KubeadmVersion: "v1.9.3",
|
KubeadmVersion: "v1.9.3",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.8",
|
DNSVersion: "1.14.8",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
|
@ -395,6 +408,7 @@ _____________________________________________________________________
|
||||||
|
|
||||||
`),
|
`),
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
name: "external etcd upgrade available",
|
name: "external etcd upgrade available",
|
||||||
upgrades: []upgrade.Upgrade{
|
upgrades: []upgrade.Upgrade{
|
||||||
|
@ -406,12 +420,14 @@ _____________________________________________________________________
|
||||||
"v1.9.2": 1,
|
"v1.9.2": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.2",
|
KubeadmVersion: "v1.9.2",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.5",
|
DNSVersion: "1.14.5",
|
||||||
EtcdVersion: "3.0.17",
|
EtcdVersion: "3.0.17",
|
||||||
},
|
},
|
||||||
After: upgrade.ClusterState{
|
After: upgrade.ClusterState{
|
||||||
KubeVersion: "v1.9.3",
|
KubeVersion: "v1.9.3",
|
||||||
KubeadmVersion: "v1.9.3",
|
KubeadmVersion: "v1.9.3",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.8",
|
DNSVersion: "1.14.8",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
|
@ -443,13 +459,153 @@ Note: Before you can perform this upgrade, you have to update kubeadm to v1.9.3.
|
||||||
|
|
||||||
_____________________________________________________________________
|
_____________________________________________________________________
|
||||||
|
|
||||||
|
`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "kubedns to coredns",
|
||||||
|
upgrades: []upgrade.Upgrade{
|
||||||
|
{
|
||||||
|
Description: "kubedns to coredns",
|
||||||
|
Before: upgrade.ClusterState{
|
||||||
|
KubeVersion: "v1.10.2",
|
||||||
|
KubeletVersions: map[string]uint16{
|
||||||
|
"v1.10.2": 1,
|
||||||
|
},
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "kube-dns",
|
||||||
|
DNSVersion: "1.14.7",
|
||||||
|
EtcdVersion: "3.1.11",
|
||||||
|
},
|
||||||
|
After: upgrade.ClusterState{
|
||||||
|
KubeVersion: "v1.11.0",
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
|
EtcdVersion: "3.2.18",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedBytes: []byte(`Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
|
||||||
|
COMPONENT CURRENT AVAILABLE
|
||||||
|
Kubelet 1 x v1.10.2 v1.11.0
|
||||||
|
|
||||||
|
Upgrade to the latest kubedns to coredns:
|
||||||
|
|
||||||
|
COMPONENT CURRENT AVAILABLE
|
||||||
|
API Server v1.10.2 v1.11.0
|
||||||
|
Controller Manager v1.10.2 v1.11.0
|
||||||
|
Scheduler v1.10.2 v1.11.0
|
||||||
|
Kube Proxy v1.10.2 v1.11.0
|
||||||
|
CoreDNS 1.0.6
|
||||||
|
Kube DNS 1.14.7
|
||||||
|
Etcd 3.1.11 3.2.18
|
||||||
|
|
||||||
|
You can now apply the upgrade by executing the following command:
|
||||||
|
|
||||||
|
kubeadm upgrade apply v1.11.0
|
||||||
|
|
||||||
|
_____________________________________________________________________
|
||||||
|
|
||||||
|
`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "coredns",
|
||||||
|
upgrades: []upgrade.Upgrade{
|
||||||
|
{
|
||||||
|
Description: "coredns",
|
||||||
|
Before: upgrade.ClusterState{
|
||||||
|
KubeVersion: "v1.10.2",
|
||||||
|
KubeletVersions: map[string]uint16{
|
||||||
|
"v1.10.2": 1,
|
||||||
|
},
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.5",
|
||||||
|
EtcdVersion: "3.1.11",
|
||||||
|
},
|
||||||
|
After: upgrade.ClusterState{
|
||||||
|
KubeVersion: "v1.11.0",
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
|
EtcdVersion: "3.2.18",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedBytes: []byte(`Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
|
||||||
|
COMPONENT CURRENT AVAILABLE
|
||||||
|
Kubelet 1 x v1.10.2 v1.11.0
|
||||||
|
|
||||||
|
Upgrade to the latest coredns:
|
||||||
|
|
||||||
|
COMPONENT CURRENT AVAILABLE
|
||||||
|
API Server v1.10.2 v1.11.0
|
||||||
|
Controller Manager v1.10.2 v1.11.0
|
||||||
|
Scheduler v1.10.2 v1.11.0
|
||||||
|
Kube Proxy v1.10.2 v1.11.0
|
||||||
|
CoreDNS 1.0.5 1.0.6
|
||||||
|
Etcd 3.1.11 3.2.18
|
||||||
|
|
||||||
|
You can now apply the upgrade by executing the following command:
|
||||||
|
|
||||||
|
kubeadm upgrade apply v1.11.0
|
||||||
|
|
||||||
|
_____________________________________________________________________
|
||||||
|
|
||||||
|
`),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "coredns to kubedns",
|
||||||
|
upgrades: []upgrade.Upgrade{
|
||||||
|
{
|
||||||
|
Description: "coredns to kubedns",
|
||||||
|
Before: upgrade.ClusterState{
|
||||||
|
KubeVersion: "v1.10.2",
|
||||||
|
KubeletVersions: map[string]uint16{
|
||||||
|
"v1.10.2": 1,
|
||||||
|
},
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
|
EtcdVersion: "3.1.11",
|
||||||
|
},
|
||||||
|
After: upgrade.ClusterState{
|
||||||
|
KubeVersion: "v1.11.0",
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "kube-dns",
|
||||||
|
DNSVersion: "1.14.9",
|
||||||
|
EtcdVersion: "3.2.18",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedBytes: []byte(`Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
|
||||||
|
COMPONENT CURRENT AVAILABLE
|
||||||
|
Kubelet 1 x v1.10.2 v1.11.0
|
||||||
|
|
||||||
|
Upgrade to the latest coredns to kubedns:
|
||||||
|
|
||||||
|
COMPONENT CURRENT AVAILABLE
|
||||||
|
API Server v1.10.2 v1.11.0
|
||||||
|
Controller Manager v1.10.2 v1.11.0
|
||||||
|
Scheduler v1.10.2 v1.11.0
|
||||||
|
Kube Proxy v1.10.2 v1.11.0
|
||||||
|
CoreDNS 1.0.6
|
||||||
|
Kube DNS 1.14.9
|
||||||
|
Etcd 3.1.11 3.2.18
|
||||||
|
|
||||||
|
You can now apply the upgrade by executing the following command:
|
||||||
|
|
||||||
|
kubeadm upgrade apply v1.11.0
|
||||||
|
|
||||||
|
_____________________________________________________________________
|
||||||
|
|
||||||
`),
|
`),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, rt := range tests {
|
for _, rt := range tests {
|
||||||
t.Run(rt.name, func(t *testing.T) {
|
t.Run(rt.name, func(t *testing.T) {
|
||||||
rt.buf = bytes.NewBufferString("")
|
rt.buf = bytes.NewBufferString("")
|
||||||
printAvailableUpgrades(rt.upgrades, rt.buf, featureGates, rt.externalEtcd)
|
printAvailableUpgrades(rt.upgrades, rt.buf, rt.externalEtcd)
|
||||||
actualBytes := rt.buf.Bytes()
|
actualBytes := rt.buf.Bytes()
|
||||||
if !bytes.Equal(actualBytes, rt.expectedBytes) {
|
if !bytes.Equal(actualBytes, rt.expectedBytes) {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
|
|
|
@ -30,7 +30,7 @@ const (
|
||||||
// HighAvailability is alpha in v1.9
|
// HighAvailability is alpha in v1.9
|
||||||
HighAvailability = "HighAvailability"
|
HighAvailability = "HighAvailability"
|
||||||
|
|
||||||
// CoreDNS is alpha in v1.9
|
// CoreDNS is GA in v1.11
|
||||||
CoreDNS = "CoreDNS"
|
CoreDNS = "CoreDNS"
|
||||||
|
|
||||||
// SelfHosting is alpha in v1.8 and v1.9
|
// SelfHosting is alpha in v1.8 and v1.9
|
||||||
|
@ -54,7 +54,7 @@ var InitFeatureGates = FeatureList{
|
||||||
StoreCertsInSecrets: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}},
|
StoreCertsInSecrets: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}},
|
||||||
// We don't want to advertise this feature gate exists in v1.9 to avoid confusion as it is not yet working
|
// We don't want to advertise this feature gate exists in v1.9 to avoid confusion as it is not yet working
|
||||||
HighAvailability: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190, HiddenInHelpText: true},
|
HighAvailability: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190, HiddenInHelpText: true},
|
||||||
CoreDNS: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.GA}, MinimumVersion: v190},
|
CoreDNS: {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.GA}, MinimumVersion: v190},
|
||||||
DynamicKubeletConfig: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
|
DynamicKubeletConfig: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}, MinimumVersion: v190},
|
||||||
Auditing: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}},
|
Auditing: {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Alpha}},
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,10 @@ func ValidateVersion(allFeatures FeatureList, requestedFeatures map[string]bool,
|
||||||
|
|
||||||
// Enabled indicates whether a feature name has been enabled
|
// Enabled indicates whether a feature name has been enabled
|
||||||
func Enabled(featureList map[string]bool, featureName string) bool {
|
func Enabled(featureList map[string]bool, featureName string) bool {
|
||||||
return featureList[string(featureName)]
|
if enabled, ok := featureList[string(featureName)]; ok {
|
||||||
|
return enabled
|
||||||
|
}
|
||||||
|
return InitFeatureGates[string(featureName)].Default
|
||||||
}
|
}
|
||||||
|
|
||||||
// Supports indicates whether a feature name is supported on the given
|
// Supports indicates whether a feature name is supported on the given
|
||||||
|
|
|
@ -168,8 +168,8 @@ func TestResolveFeatureGateDependencies(t *testing.T) {
|
||||||
expectedFeatures: map[string]bool{},
|
expectedFeatures: map[string]bool{},
|
||||||
},
|
},
|
||||||
{ // others flags
|
{ // others flags
|
||||||
inputFeatures: map[string]bool{CoreDNS: true},
|
inputFeatures: map[string]bool{CoreDNS: false},
|
||||||
expectedFeatures: map[string]bool{CoreDNS: true},
|
expectedFeatures: map[string]bool{CoreDNS: false},
|
||||||
},
|
},
|
||||||
{ // just StoreCertsInSecrets flags
|
{ // just StoreCertsInSecrets flags
|
||||||
inputFeatures: map[string]bool{StoreCertsInSecrets: true},
|
inputFeatures: map[string]bool{StoreCertsInSecrets: true},
|
||||||
|
@ -189,3 +189,16 @@ func TestResolveFeatureGateDependencies(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestEnabledDefaults tests that Enabled returns the default values for
|
||||||
|
// each feature gate when no feature gates are specified.
|
||||||
|
func TestEnabledDefaults(t *testing.T) {
|
||||||
|
for featureName, feature := range InitFeatureGates {
|
||||||
|
featureList := make(map[string]bool)
|
||||||
|
|
||||||
|
enabled := Enabled(featureList, featureName)
|
||||||
|
if enabled != feature.Default {
|
||||||
|
t.Errorf("Enabled returned %v instead of default value %v for feature %s", enabled, feature.Default, featureName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -48,6 +48,28 @@ const (
|
||||||
kubeDNSFederation = "federations"
|
kubeDNSFederation = "federations"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// DeployedDNSAddon returns the type of DNS addon currently deployed
|
||||||
|
func DeployedDNSAddon(client clientset.Interface) (string, string, error) {
|
||||||
|
deploymentsClient := client.AppsV1().Deployments(metav1.NamespaceSystem)
|
||||||
|
deployments, err := deploymentsClient.List(metav1.ListOptions{LabelSelector: "k8s-app=kube-dns"})
|
||||||
|
if err != nil {
|
||||||
|
return "", "", fmt.Errorf("couldn't retrieve DNS addon deployments: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch len(deployments.Items) {
|
||||||
|
case 0:
|
||||||
|
return "", "", nil
|
||||||
|
case 1:
|
||||||
|
addonName := deployments.Items[0].Name
|
||||||
|
addonImage := deployments.Items[0].Spec.Template.Spec.Containers[0].Image
|
||||||
|
addonImageParts := strings.Split(addonImage, ":")
|
||||||
|
addonVersion := addonImageParts[len(addonImageParts)-1]
|
||||||
|
return addonName, addonVersion, nil
|
||||||
|
default:
|
||||||
|
return "", "", fmt.Errorf("multiple DNS addon deployments found: %v", deployments.Items)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// EnsureDNSAddon creates the kube-dns or CoreDNS addon
|
// EnsureDNSAddon creates the kube-dns or CoreDNS addon
|
||||||
func EnsureDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interface) error {
|
func EnsureDNSAddon(cfg *kubeadmapi.MasterConfiguration, client clientset.Interface) error {
|
||||||
k8sVersion, err := version.ParseSemantic(cfg.KubernetesVersion)
|
k8sVersion, err := version.ParseSemantic(cfg.KubernetesVersion)
|
||||||
|
|
|
@ -91,6 +91,10 @@ go_test(
|
||||||
"//pkg/util/version:go_default_library",
|
"//pkg/util/version:go_default_library",
|
||||||
"//vendor/github.com/coreos/etcd/clientv3:go_default_library",
|
"//vendor/github.com/coreos/etcd/clientv3:go_default_library",
|
||||||
"//vendor/github.com/coreos/etcd/pkg/transport:go_default_library",
|
"//vendor/github.com/coreos/etcd/pkg/transport:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/apps/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/kubernetes/fake:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/features"
|
"k8s.io/kubernetes/cmd/kubeadm/app/features"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns"
|
"k8s.io/kubernetes/cmd/kubeadm/app/phases/addons/dns"
|
||||||
|
@ -67,6 +68,8 @@ func ActiveDNSAddon(featureGates map[string]bool) string {
|
||||||
type ClusterState struct {
|
type ClusterState struct {
|
||||||
// KubeVersion describes the version of the Kubernetes API Server, Controller Manager, Scheduler and Proxy.
|
// KubeVersion describes the version of the Kubernetes API Server, Controller Manager, Scheduler and Proxy.
|
||||||
KubeVersion string
|
KubeVersion string
|
||||||
|
// DNSType
|
||||||
|
DNSType string
|
||||||
// DNSVersion describes the version of the kube-dns images used and manifest version
|
// DNSVersion describes the version of the kube-dns images used and manifest version
|
||||||
DNSVersion string
|
DNSVersion string
|
||||||
// KubeadmVersion describes the version of the kubeadm CLI
|
// KubeadmVersion describes the version of the kubeadm CLI
|
||||||
|
@ -79,7 +82,7 @@ type ClusterState struct {
|
||||||
|
|
||||||
// GetAvailableUpgrades fetches all versions from the specified VersionGetter and computes which
|
// GetAvailableUpgrades fetches all versions from the specified VersionGetter and computes which
|
||||||
// kinds of upgrades can be performed
|
// kinds of upgrades can be performed
|
||||||
func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesAllowed, rcUpgradesAllowed bool, etcdClient etcdutil.ClusterInterrogator, featureGates map[string]bool) ([]Upgrade, error) {
|
func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesAllowed, rcUpgradesAllowed bool, etcdClient etcdutil.ClusterInterrogator, featureGates map[string]bool, client clientset.Interface) ([]Upgrade, error) {
|
||||||
fmt.Println("[upgrade] Fetching available versions to upgrade to")
|
fmt.Println("[upgrade] Fetching available versions to upgrade to")
|
||||||
|
|
||||||
// Collect the upgrades kubeadm can do in this list
|
// Collect the upgrades kubeadm can do in this list
|
||||||
|
@ -117,10 +120,16 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
|
||||||
return upgrades, err
|
return upgrades, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dnsType, dnsVersion, err := dns.DeployedDNSAddon(client)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
// Construct a descriptor for the current state of the world
|
// Construct a descriptor for the current state of the world
|
||||||
beforeState := ClusterState{
|
beforeState := ClusterState{
|
||||||
KubeVersion: clusterVersionStr,
|
KubeVersion: clusterVersionStr,
|
||||||
DNSVersion: dns.GetDNSVersion(clusterVersion, ActiveDNSAddon(featureGates)),
|
DNSType: dnsType,
|
||||||
|
DNSVersion: dnsVersion,
|
||||||
KubeadmVersion: kubeadmVersionStr,
|
KubeadmVersion: kubeadmVersionStr,
|
||||||
KubeletVersions: kubeletVersions,
|
KubeletVersions: kubeletVersions,
|
||||||
EtcdVersion: etcdVersion,
|
EtcdVersion: etcdVersion,
|
||||||
|
@ -163,6 +172,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
|
||||||
Before: beforeState,
|
Before: beforeState,
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: patchVersionStr,
|
KubeVersion: patchVersionStr,
|
||||||
|
DNSType: ActiveDNSAddon(featureGates),
|
||||||
DNSVersion: dns.GetDNSVersion(patchVersion, ActiveDNSAddon(featureGates)),
|
DNSVersion: dns.GetDNSVersion(patchVersion, ActiveDNSAddon(featureGates)),
|
||||||
KubeadmVersion: newKubeadmVer,
|
KubeadmVersion: newKubeadmVer,
|
||||||
EtcdVersion: getSuggestedEtcdVersion(patchVersionStr),
|
EtcdVersion: getSuggestedEtcdVersion(patchVersionStr),
|
||||||
|
@ -179,6 +189,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
|
||||||
Before: beforeState,
|
Before: beforeState,
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: stableVersionStr,
|
KubeVersion: stableVersionStr,
|
||||||
|
DNSType: ActiveDNSAddon(featureGates),
|
||||||
DNSVersion: dns.GetDNSVersion(stableVersion, ActiveDNSAddon(featureGates)),
|
DNSVersion: dns.GetDNSVersion(stableVersion, ActiveDNSAddon(featureGates)),
|
||||||
KubeadmVersion: stableVersionStr,
|
KubeadmVersion: stableVersionStr,
|
||||||
EtcdVersion: getSuggestedEtcdVersion(stableVersionStr),
|
EtcdVersion: getSuggestedEtcdVersion(stableVersionStr),
|
||||||
|
@ -224,6 +235,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
|
||||||
Before: beforeState,
|
Before: beforeState,
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: previousBranchLatestVersionStr,
|
KubeVersion: previousBranchLatestVersionStr,
|
||||||
|
DNSType: ActiveDNSAddon(featureGates),
|
||||||
DNSVersion: dns.GetDNSVersion(previousBranchLatestVersion, ActiveDNSAddon(featureGates)),
|
DNSVersion: dns.GetDNSVersion(previousBranchLatestVersion, ActiveDNSAddon(featureGates)),
|
||||||
KubeadmVersion: previousBranchLatestVersionStr,
|
KubeadmVersion: previousBranchLatestVersionStr,
|
||||||
EtcdVersion: getSuggestedEtcdVersion(previousBranchLatestVersionStr),
|
EtcdVersion: getSuggestedEtcdVersion(previousBranchLatestVersionStr),
|
||||||
|
@ -250,6 +262,7 @@ func GetAvailableUpgrades(versionGetterImpl VersionGetter, experimentalUpgradesA
|
||||||
Before: beforeState,
|
Before: beforeState,
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: unstableKubeVersion,
|
KubeVersion: unstableKubeVersion,
|
||||||
|
DNSType: ActiveDNSAddon(featureGates),
|
||||||
DNSVersion: unstableKubeDNSVersion,
|
DNSVersion: unstableKubeDNSVersion,
|
||||||
KubeadmVersion: unstableKubeVersion,
|
KubeadmVersion: unstableKubeVersion,
|
||||||
EtcdVersion: getSuggestedEtcdVersion(unstableKubeVersion),
|
EtcdVersion: getSuggestedEtcdVersion(unstableKubeVersion),
|
||||||
|
|
|
@ -23,6 +23,11 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/coreos/etcd/clientv3"
|
"github.com/coreos/etcd/clientv3"
|
||||||
|
apps "k8s.io/api/apps/v1"
|
||||||
|
"k8s.io/api/core/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
clientsetfake "k8s.io/client-go/kubernetes/fake"
|
||||||
|
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd"
|
etcdutil "k8s.io/kubernetes/cmd/kubeadm/app/util/etcd"
|
||||||
versionutil "k8s.io/kubernetes/pkg/util/version"
|
versionutil "k8s.io/kubernetes/pkg/util/version"
|
||||||
)
|
)
|
||||||
|
@ -103,7 +108,6 @@ func (f fakeEtcdClient) GetClusterVersions() (map[string]string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAvailableUpgrades(t *testing.T) {
|
func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
featureGates := make(map[string]bool)
|
|
||||||
etcdClient := fakeEtcdClient{}
|
etcdClient := fakeEtcdClient{}
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
|
@ -112,6 +116,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
allowExperimental, allowRCs bool
|
allowExperimental, allowRCs bool
|
||||||
errExpected bool
|
errExpected bool
|
||||||
etcdClient etcdutil.ClusterInterrogator
|
etcdClient etcdutil.ClusterInterrogator
|
||||||
|
beforeDNSType string
|
||||||
|
beforeDNSVersion string
|
||||||
|
featureGates map[string]bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "no action needed, already up-to-date",
|
name: "no action needed, already up-to-date",
|
||||||
|
@ -123,6 +130,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
stablePatchVersion: "v1.9.3",
|
stablePatchVersion: "v1.9.3",
|
||||||
stableVersion: "v1.9.3",
|
stableVersion: "v1.9.3",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "v1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{},
|
expectedUpgrades: []Upgrade{},
|
||||||
allowExperimental: false,
|
allowExperimental: false,
|
||||||
errExpected: false,
|
errExpected: false,
|
||||||
|
@ -138,6 +148,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
stablePatchVersion: "v1.9.3",
|
stablePatchVersion: "v1.9.3",
|
||||||
stableVersion: "v1.9.3",
|
stableVersion: "v1.9.3",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "version in the v1.9 series",
|
Description: "version in the v1.9 series",
|
||||||
|
@ -147,13 +160,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.1": 1,
|
"v1.9.1": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.2",
|
KubeadmVersion: "v1.9.2",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.3",
|
KubeVersion: "v1.9.3",
|
||||||
KubeadmVersion: "v1.9.3",
|
KubeadmVersion: "v1.9.3",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -172,6 +187,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
stablePatchVersion: "v1.9.3",
|
stablePatchVersion: "v1.9.3",
|
||||||
stableVersion: "v1.9.3",
|
stableVersion: "v1.9.3",
|
||||||
}, ""),
|
}, ""),
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "version in the v1.9 series",
|
Description: "version in the v1.9 series",
|
||||||
|
@ -181,13 +199,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.1": 1,
|
"v1.9.1": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.2",
|
KubeadmVersion: "v1.9.2",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.3",
|
KubeVersion: "v1.9.3",
|
||||||
KubeadmVersion: "v1.9.3",
|
KubeadmVersion: "v1.9.3",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -206,6 +226,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
stablePatchVersion: "v1.9.1",
|
stablePatchVersion: "v1.9.1",
|
||||||
stableVersion: "v1.10.0",
|
stableVersion: "v1.10.0",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "stable version",
|
Description: "stable version",
|
||||||
|
@ -215,13 +238,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.1": 1,
|
"v1.9.1": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.10.0",
|
KubeadmVersion: "v1.10.0",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.0",
|
KubeVersion: "v1.10.0",
|
||||||
KubeadmVersion: "v1.10.0",
|
KubeadmVersion: "v1.10.0",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -240,6 +265,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
stablePatchVersion: "v1.9.5",
|
stablePatchVersion: "v1.9.5",
|
||||||
stableVersion: "v1.10.1",
|
stableVersion: "v1.10.1",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "version in the v1.9 series",
|
Description: "version in the v1.9 series",
|
||||||
|
@ -249,13 +277,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.3": 1,
|
"v1.9.3": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.9.5",
|
KubeVersion: "v1.9.5",
|
||||||
KubeadmVersion: "v1.9.5", // Note: The kubeadm version mustn't be "downgraded" here
|
KubeadmVersion: "v1.9.5", // Note: The kubeadm version mustn't be "downgraded" here
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -267,13 +297,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.3": 1,
|
"v1.9.3": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.1",
|
KubeVersion: "v1.10.1",
|
||||||
KubeadmVersion: "v1.10.1",
|
KubeadmVersion: "v1.10.1",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -293,6 +325,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
stableVersion: "v1.9.5",
|
stableVersion: "v1.9.5",
|
||||||
latestVersion: "v1.10.0-alpha.2",
|
latestVersion: "v1.10.0-alpha.2",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "v1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{},
|
expectedUpgrades: []Upgrade{},
|
||||||
allowExperimental: true,
|
allowExperimental: true,
|
||||||
errExpected: false,
|
errExpected: false,
|
||||||
|
@ -309,6 +344,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
stableVersion: "v1.9.5",
|
stableVersion: "v1.9.5",
|
||||||
latestVersion: "v1.10.0-alpha.2",
|
latestVersion: "v1.10.0-alpha.2",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "experimental version",
|
Description: "experimental version",
|
||||||
|
@ -318,13 +356,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.0-alpha.2",
|
KubeVersion: "v1.10.0-alpha.2",
|
||||||
KubeadmVersion: "v1.10.0-alpha.2",
|
KubeadmVersion: "v1.10.0-alpha.2",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -344,6 +384,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
stableVersion: "v1.9.5",
|
stableVersion: "v1.9.5",
|
||||||
latestVersion: "v1.10.0-alpha.2",
|
latestVersion: "v1.10.0-alpha.2",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "experimental version",
|
Description: "experimental version",
|
||||||
|
@ -353,13 +396,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.0-alpha.2",
|
KubeVersion: "v1.10.0-alpha.2",
|
||||||
KubeadmVersion: "v1.10.0-alpha.2",
|
KubeadmVersion: "v1.10.0-alpha.2",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -380,6 +425,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
latestDevBranchVersion: "v1.10.0-beta.1",
|
latestDevBranchVersion: "v1.10.0-beta.1",
|
||||||
latestVersion: "v1.11.0-alpha.0",
|
latestVersion: "v1.11.0-alpha.0",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "experimental version",
|
Description: "experimental version",
|
||||||
|
@ -389,13 +437,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.0-beta.1",
|
KubeVersion: "v1.10.0-beta.1",
|
||||||
KubeadmVersion: "v1.10.0-beta.1",
|
KubeadmVersion: "v1.10.0-beta.1",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -416,6 +466,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
latestDevBranchVersion: "v1.10.0-rc.1",
|
latestDevBranchVersion: "v1.10.0-rc.1",
|
||||||
latestVersion: "v1.11.0-alpha.1",
|
latestVersion: "v1.11.0-alpha.1",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "release candidate version",
|
Description: "release candidate version",
|
||||||
|
@ -425,13 +478,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.0-rc.1",
|
KubeVersion: "v1.10.0-rc.1",
|
||||||
KubeadmVersion: "v1.10.0-rc.1",
|
KubeadmVersion: "v1.10.0-rc.1",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -452,6 +507,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
latestDevBranchVersion: "v1.10.6-rc.1",
|
latestDevBranchVersion: "v1.10.6-rc.1",
|
||||||
latestVersion: "v1.11.1-alpha.0",
|
latestVersion: "v1.11.1-alpha.0",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "experimental version", // Note that this is considered an experimental version in this uncommon scenario
|
Description: "experimental version", // Note that this is considered an experimental version in this uncommon scenario
|
||||||
|
@ -461,13 +519,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.6-rc.1",
|
KubeVersion: "v1.10.6-rc.1",
|
||||||
KubeadmVersion: "v1.10.6-rc.1",
|
KubeadmVersion: "v1.10.6-rc.1",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -488,6 +548,9 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
latestDevBranchVersion: "v1.10.0-rc.1",
|
latestDevBranchVersion: "v1.10.0-rc.1",
|
||||||
latestVersion: "v1.11.0-alpha.2",
|
latestVersion: "v1.11.0-alpha.2",
|
||||||
},
|
},
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "release candidate version",
|
Description: "release candidate version",
|
||||||
|
@ -497,13 +560,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.10.0-rc.1",
|
KubeVersion: "v1.10.0-rc.1",
|
||||||
KubeadmVersion: "v1.10.0-rc.1",
|
KubeadmVersion: "v1.10.0-rc.1",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -515,13 +580,15 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.9.5": 1,
|
"v1.9.5": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.9.5",
|
KubeadmVersion: "v1.9.5",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.11.0-alpha.2",
|
KubeVersion: "v1.11.0-alpha.2",
|
||||||
KubeadmVersion: "v1.11.0-alpha.2",
|
KubeadmVersion: "v1.11.0-alpha.2",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.2.18",
|
EtcdVersion: "3.2.18",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -553,7 +620,10 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
kubeletVersion: "v1.10.0",
|
kubeletVersion: "v1.10.0",
|
||||||
kubeadmVersion: "v1.10.1",
|
kubeadmVersion: "v1.10.1",
|
||||||
}, "v1.11.1"),
|
}, "v1.11.1"),
|
||||||
etcdClient: etcdClient,
|
etcdClient: etcdClient,
|
||||||
|
beforeDNSType: constants.CoreDNS,
|
||||||
|
beforeDNSVersion: "1.0.6",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
expectedUpgrades: []Upgrade{
|
expectedUpgrades: []Upgrade{
|
||||||
{
|
{
|
||||||
Description: "version in the v1.1 series",
|
Description: "version in the v1.1 series",
|
||||||
|
@ -563,12 +633,88 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
"v1.10.0": 1,
|
"v1.10.0": 1,
|
||||||
},
|
},
|
||||||
KubeadmVersion: "v1.10.1",
|
KubeadmVersion: "v1.10.1",
|
||||||
DNSVersion: "1.14.10",
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
EtcdVersion: "3.1.12",
|
EtcdVersion: "3.1.12",
|
||||||
},
|
},
|
||||||
After: ClusterState{
|
After: ClusterState{
|
||||||
KubeVersion: "v1.11.1",
|
KubeVersion: "v1.11.1",
|
||||||
KubeadmVersion: "v1.11.1",
|
KubeadmVersion: "v1.11.1",
|
||||||
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
|
EtcdVersion: "3.2.18",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "kubedns to coredns",
|
||||||
|
vg: &fakeVersionGetter{
|
||||||
|
clusterVersion: "v1.10.2",
|
||||||
|
kubeletVersion: "v1.10.2", // the kubelet are on the same version as the control plane
|
||||||
|
kubeadmVersion: "v1.11.0",
|
||||||
|
|
||||||
|
stablePatchVersion: "v1.11.0",
|
||||||
|
stableVersion: "v1.11.0",
|
||||||
|
},
|
||||||
|
etcdClient: etcdClient,
|
||||||
|
beforeDNSType: constants.KubeDNS,
|
||||||
|
beforeDNSVersion: "1.14.7",
|
||||||
|
featureGates: make(map[string]bool),
|
||||||
|
expectedUpgrades: []Upgrade{
|
||||||
|
{
|
||||||
|
Description: "version in the v1.1 series",
|
||||||
|
Before: ClusterState{
|
||||||
|
KubeVersion: "v1.10.2",
|
||||||
|
KubeletVersions: map[string]uint16{
|
||||||
|
"v1.10.2": 1,
|
||||||
|
},
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "kube-dns",
|
||||||
|
DNSVersion: "1.14.7",
|
||||||
|
EtcdVersion: "3.1.12",
|
||||||
|
},
|
||||||
|
After: ClusterState{
|
||||||
|
KubeVersion: "v1.11.0",
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "coredns",
|
||||||
|
DNSVersion: "1.0.6",
|
||||||
|
EtcdVersion: "3.2.18",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "keep coredns",
|
||||||
|
vg: &fakeVersionGetter{
|
||||||
|
clusterVersion: "v1.10.2",
|
||||||
|
kubeletVersion: "v1.10.2", // the kubelet are on the same version as the control plane
|
||||||
|
kubeadmVersion: "v1.11.0",
|
||||||
|
|
||||||
|
stablePatchVersion: "v1.11.0",
|
||||||
|
stableVersion: "v1.11.0",
|
||||||
|
},
|
||||||
|
etcdClient: etcdClient,
|
||||||
|
beforeDNSType: constants.KubeDNS,
|
||||||
|
beforeDNSVersion: "1.14.7",
|
||||||
|
featureGates: map[string]bool{"CoreDNS": false},
|
||||||
|
expectedUpgrades: []Upgrade{
|
||||||
|
{
|
||||||
|
Description: "version in the v1.1 series",
|
||||||
|
Before: ClusterState{
|
||||||
|
KubeVersion: "v1.10.2",
|
||||||
|
KubeletVersions: map[string]uint16{
|
||||||
|
"v1.10.2": 1,
|
||||||
|
},
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "kube-dns",
|
||||||
|
DNSVersion: "1.14.7",
|
||||||
|
EtcdVersion: "3.1.12",
|
||||||
|
},
|
||||||
|
After: ClusterState{
|
||||||
|
KubeVersion: "v1.11.0",
|
||||||
|
KubeadmVersion: "v1.11.0",
|
||||||
|
DNSType: "kube-dns",
|
||||||
DNSVersion: "1.14.10",
|
DNSVersion: "1.14.10",
|
||||||
EtcdVersion: "3.2.18",
|
EtcdVersion: "3.2.18",
|
||||||
},
|
},
|
||||||
|
@ -581,10 +727,36 @@ func TestGetAvailableUpgrades(t *testing.T) {
|
||||||
// kubernetes release.
|
// kubernetes release.
|
||||||
for _, rt := range tests {
|
for _, rt := range tests {
|
||||||
t.Run(rt.name, func(t *testing.T) {
|
t.Run(rt.name, func(t *testing.T) {
|
||||||
actualUpgrades, actualErr := GetAvailableUpgrades(rt.vg, rt.allowExperimental, rt.allowRCs, rt.etcdClient, featureGates)
|
|
||||||
fmt.Printf("actualErr: %v\n", actualErr)
|
client := clientsetfake.NewSimpleClientset(&apps.Deployment{
|
||||||
fmt.Printf("actualErr != nil: %v\n", actualErr != nil)
|
TypeMeta: metav1.TypeMeta{
|
||||||
fmt.Printf("errExpected: %v\n", rt.errExpected)
|
Kind: "Deployment",
|
||||||
|
APIVersion: "apps/v1",
|
||||||
|
},
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: rt.beforeDNSType,
|
||||||
|
Namespace: "kube-system",
|
||||||
|
Labels: map[string]string{
|
||||||
|
"k8s-app": "kube-dns",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Spec: apps.DeploymentSpec{
|
||||||
|
Template: v1.PodTemplateSpec{
|
||||||
|
Spec: v1.PodSpec{
|
||||||
|
Containers: []v1.Container{
|
||||||
|
{
|
||||||
|
Image: "test:" + rt.beforeDNSVersion,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
actualUpgrades, actualErr := GetAvailableUpgrades(rt.vg, rt.allowExperimental, rt.allowRCs, rt.etcdClient, rt.featureGates, client)
|
||||||
|
if !reflect.DeepEqual(actualUpgrades, rt.expectedUpgrades) {
|
||||||
|
t.Errorf("failed TestGetAvailableUpgrades\n\texpected upgrades: %v\n\tgot: %v", rt.expectedUpgrades, actualUpgrades)
|
||||||
|
}
|
||||||
if (actualErr != nil) != rt.errExpected {
|
if (actualErr != nil) != rt.errExpected {
|
||||||
fmt.Printf("Hello error")
|
fmt.Printf("Hello error")
|
||||||
t.Errorf("failed TestGetAvailableUpgrades\n\texpected error: %t\n\tgot error: %t", rt.errExpected, (actualErr != nil))
|
t.Errorf("failed TestGetAvailableUpgrades\n\texpected error: %t\n\tgot error: %t", rt.errExpected, (actualErr != nil))
|
||||||
|
|
Loading…
Reference in New Issue