diff --git a/pkg/api/k8s_versions.go b/pkg/api/k8s_versions.go index 4ebe1af0e28..ff9de436449 100644 --- a/pkg/api/k8s_versions.go +++ b/pkg/api/k8s_versions.go @@ -13,6 +13,39 @@ import ( // k8sComponentVersions defines "best known-working" component versions for each minor version of k8s // Don't delete these hash table keys as they are consumed independently by AKS! var k8sComponentVersions = map[string]map[string]string{ + "1.14": { + "dockerEngine": "1.13.*", + "dashboard": "kubernetes-dashboard-amd64:v1.10.1", + "exechealthz": "exechealthz-amd64:1.2", + "addon-resizer": "addon-resizer:1.8.4", + "heapster": "heapster-amd64:v1.5.4", + "metrics-server": "metrics-server-amd64:v0.2.1", + "coredns": "coredns:1.2.6", + "kube-dns": "k8s-dns-kube-dns-amd64:1.15.0", + "addon-manager": "kube-addon-manager-amd64:v8.9", + "dnsmasq": "k8s-dns-dnsmasq-nanny-amd64:1.15.0", + "pause": "pause-amd64:3.1", + "tiller": "tiller:v2.11.0", + "rescheduler": "rescheduler:v0.4.0", + "aci-connector": "virtual-kubelet:latest", + ContainerMonitoringAddonName: "oms:ciprod01092019", + AzureCNINetworkMonitoringAddonName: "networkmonitor:v0.0.4", + "cluster-autoscaler": "cluster-autoscaler:v1.13.1", + NVIDIADevicePluginAddonName: "k8s-device-plugin:1.11", + "k8s-dns-sidecar": "k8s-dns-sidecar-amd64:1.14.10", + "nodestatusfreq": DefaultKubernetesNodeStatusUpdateFrequency, + "nodegraceperiod": DefaultKubernetesCtrlMgrNodeMonitorGracePeriod, + "podeviction": DefaultKubernetesCtrlMgrPodEvictionTimeout, + "routeperiod": DefaultKubernetesCtrlMgrRouteReconciliationPeriod, + "backoffretries": strconv.Itoa(DefaultKubernetesCloudProviderBackoffRetries), + "backoffjitter": strconv.FormatFloat(DefaultKubernetesCloudProviderBackoffJitter, 'f', -1, 64), + "backoffduration": strconv.Itoa(DefaultKubernetesCloudProviderBackoffDuration), + "backoffexponent": strconv.FormatFloat(DefaultKubernetesCloudProviderBackoffExponent, 'f', -1, 64), + "ratelimitqps": strconv.FormatFloat(DefaultKubernetesCloudProviderRateLimitQPS, 'f', -1, 64), + "ratelimitbucket": strconv.Itoa(DefaultKubernetesCloudProviderRateLimitBucket), + "gchighthreshold": strconv.Itoa(DefaultKubernetesGCHighThreshold), + "gclowthreshold": strconv.Itoa(DefaultKubernetesGCLowThreshold), + }, "1.13": { "dockerEngine": "1.13.*", "dashboard": "kubernetes-dashboard-amd64:v1.10.1", @@ -324,6 +357,42 @@ func getK8sVersionComponents(version string, overrides map[string]string) map[st majorMinor := strings.Join(s[:2], ".") var ret map[string]string switch majorMinor { + case "1.14": + ret = map[string]string{ + "hyperkube": "hyperkube-amd64:v" + version, + "ccm": "cloud-controller-manager-amd64:v" + version, + "windowszip": "v" + version + "-1int.zip", + DefaultDashboardAddonName: k8sComponentVersions["1.14"]["dashboard"], + "exechealthz": k8sComponentVersions["1.14"]["exechealthz"], + "addonresizer": k8sComponentVersions["1.14"]["addon-resizer"], + "heapster": k8sComponentVersions["1.14"]["heapster"], + DefaultMetricsServerAddonName: k8sComponentVersions["1.14"]["metrics-server"], + "coredns": k8sComponentVersions["1.14"]["coredns"], + "kube-dns": k8sComponentVersions["1.14"]["kube-dns"], + "addonmanager": k8sComponentVersions["1.14"]["addon-manager"], + "dnsmasq": k8sComponentVersions["1.14"]["dnsmasq"], + "pause": k8sComponentVersions["1.14"]["pause"], + DefaultTillerAddonName: k8sComponentVersions["1.14"]["tiller"], + DefaultReschedulerAddonName: k8sComponentVersions["1.14"]["rescheduler"], + DefaultACIConnectorAddonName: k8sComponentVersions["1.14"]["aci-connector"], + ContainerMonitoringAddonName: k8sComponentVersions["1.14"][ContainerMonitoringAddonName], + AzureCNINetworkMonitoringAddonName: k8sComponentVersions["1.14"][AzureCNINetworkMonitoringAddonName], + DefaultClusterAutoscalerAddonName: k8sComponentVersions["1.14"]["cluster-autoscaler"], + "k8s-dns-sidecar": k8sComponentVersions["1.14"]["k8s-dns-sidecar"], + "nodestatusfreq": k8sComponentVersions["1.14"]["nodestatusfreq"], + "nodegraceperiod": k8sComponentVersions["1.14"]["nodegraceperiod"], + "podeviction": k8sComponentVersions["1.14"]["podeviction"], + "routeperiod": k8sComponentVersions["1.14"]["routeperiod"], + "backoffretries": k8sComponentVersions["1.14"]["backoffretries"], + "backoffjitter": k8sComponentVersions["1.14"]["backoffjitter"], + "backoffduration": k8sComponentVersions["1.14"]["backoffduration"], + "backoffexponent": k8sComponentVersions["1.14"]["backoffexponent"], + "ratelimitqps": k8sComponentVersions["1.14"]["ratelimitqps"], + "ratelimitbucket": k8sComponentVersions["1.14"]["ratelimitbucket"], + "gchighthreshold": k8sComponentVersions["1.14"]["gchighthreshold"], + "gclowthreshold": k8sComponentVersions["1.14"]["gclowthreshold"], + NVIDIADevicePluginAddonName: k8sComponentVersions["1.14"][NVIDIADevicePluginAddonName], + } case "1.13": ret = map[string]string{ "hyperkube": "hyperkube-amd64:v" + version, diff --git a/pkg/api/k8s_versions_test.go b/pkg/api/k8s_versions_test.go index dd15195112b..8540ffb0d27 100644 --- a/pkg/api/k8s_versions_test.go +++ b/pkg/api/k8s_versions_test.go @@ -8,12 +8,57 @@ import ( ) func TestGetK8sVersionComponents(t *testing.T) { + oneDotFourteenDotZero := getK8sVersionComponents("1.14.0", nil) + if oneDotFourteenDotZero == nil { + t.Fatalf("getK8sVersionComponents() should not return nil for valid version") + } + expected := map[string]string{ + "hyperkube": "hyperkube-amd64:v1.14.0", + "ccm": "cloud-controller-manager-amd64:v1.14.0", + "windowszip": "v1.14.0-1int.zip", + DefaultDashboardAddonName: k8sComponentVersions["1.14"]["dashboard"], + "exechealthz": k8sComponentVersions["1.14"]["exechealthz"], + "addonresizer": k8sComponentVersions["1.14"]["addon-resizer"], + "heapster": k8sComponentVersions["1.14"]["heapster"], + DefaultMetricsServerAddonName: k8sComponentVersions["1.14"]["metrics-server"], + "coredns": k8sComponentVersions["1.14"]["coredns"], + "kube-dns": k8sComponentVersions["1.14"]["kube-dns"], + "addonmanager": k8sComponentVersions["1.14"]["addon-manager"], + "dnsmasq": k8sComponentVersions["1.14"]["dnsmasq"], + "pause": k8sComponentVersions["1.14"]["pause"], + DefaultTillerAddonName: k8sComponentVersions["1.14"]["tiller"], + DefaultReschedulerAddonName: k8sComponentVersions["1.14"]["rescheduler"], + DefaultACIConnectorAddonName: k8sComponentVersions["1.14"]["aci-connector"], + ContainerMonitoringAddonName: k8sComponentVersions["1.14"][ContainerMonitoringAddonName], + AzureCNINetworkMonitoringAddonName: k8sComponentVersions["1.14"][AzureCNINetworkMonitoringAddonName], + DefaultClusterAutoscalerAddonName: k8sComponentVersions["1.14"]["cluster-autoscaler"], + NVIDIADevicePluginAddonName: k8sComponentVersions["1.14"][NVIDIADevicePluginAddonName], + "k8s-dns-sidecar": k8sComponentVersions["1.14"]["k8s-dns-sidecar"], + "nodestatusfreq": k8sComponentVersions["1.14"]["nodestatusfreq"], + "nodegraceperiod": k8sComponentVersions["1.14"]["nodegraceperiod"], + "podeviction": k8sComponentVersions["1.14"]["podeviction"], + "routeperiod": k8sComponentVersions["1.14"]["routeperiod"], + "backoffretries": k8sComponentVersions["1.14"]["backoffretries"], + "backoffjitter": k8sComponentVersions["1.14"]["backoffjitter"], + "backoffduration": k8sComponentVersions["1.14"]["backoffduration"], + "backoffexponent": k8sComponentVersions["1.14"]["backoffexponent"], + "ratelimitqps": k8sComponentVersions["1.14"]["ratelimitqps"], + "ratelimitbucket": k8sComponentVersions["1.14"]["ratelimitbucket"], + "gchighthreshold": k8sComponentVersions["1.14"]["gchighthreshold"], + "gclowthreshold": k8sComponentVersions["1.14"]["gclowthreshold"], + } + + for k, v := range oneDotFourteenDotZero { + if expected[k] != v { + t.Fatalf("getK8sVersionComponents() returned an unexpected map[string]string value for k8s 1.14.0: %s = %s", k, oneDotFourteenDotZero[k]) + } + } oneDotTwelveDotZero := getK8sVersionComponents("1.12.0", nil) if oneDotTwelveDotZero == nil { t.Fatalf("getK8sVersionComponents() should not return nil for valid version") } - expected := map[string]string{ + expected = map[string]string{ "hyperkube": "hyperkube-amd64:v1.12.0", "ccm": "cloud-controller-manager-amd64:v1.12.0", "windowszip": "v1.12.0-1int.zip",