acsengine

package
v0.12.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 1, 2018 License: MIT Imports: 39 Imported by: 0

Documentation

Overview

Package acsengine takes an ACS cluster model and generates the corresponding template

Index

Constants

View Source
const (
	// DefaultMasterSubnet specifies the default master subnet for DCOS or Swarm
	DefaultMasterSubnet = "172.16.0.0/24"
	// DefaultFirstConsecutiveStaticIP specifies the static IP address on master 0 for DCOS or Swarm
	DefaultFirstConsecutiveStaticIP = "172.16.0.5"
	// DefaultSwarmWindowsMasterSubnet specifies the default master subnet for a Swarm Windows cluster
	DefaultSwarmWindowsMasterSubnet = "192.168.255.0/24"
	// DefaultSwarmWindowsFirstConsecutiveStaticIP specifies the static IP address on master 0 for a Swarm WIndows cluster
	DefaultSwarmWindowsFirstConsecutiveStaticIP = "192.168.255.5"
	// DefaultKubernetesMasterSubnet specifies the default subnet for masters and agents.
	DefaultKubernetesMasterSubnet = "10.240.0.0/16"
	// DefaultKubernetesClusterSubnet specifies the default subnet for pods.
	DefaultKubernetesClusterSubnet = "10.244.0.0/16"
	// DefaultDockerBridgeSubnet specifies the default subnet for the docker bridge network for masters and agents.
	DefaultDockerBridgeSubnet = "172.17.0.1/16"
	// DefaultNonMasqueradeCidr specifies the subnet that should not be masqueraded on host
	DefaultNonMasqueradeCidr = "10.0.0.0/8"
	// DefaultFirstConsecutiveKubernetesStaticIP specifies the static IP address on Kubernetes master 0
	DefaultFirstConsecutiveKubernetesStaticIP = "10.240.255.5"
	// DefaultAgentSubnetTemplate specifies a default agent subnet
	DefaultAgentSubnetTemplate = "10.%d.0.0/16"
	// DefaultKubernetesSubnet specifies the default subnet used for all masters, agents and pods
	// when VNET integration is enabled.
	DefaultKubernetesSubnet = "10.240.0.0/12"
	// DefaultKubernetesFirstConsecutiveStaticIPOffset specifies the IP address offset of master 0
	// when VNET integration is enabled.
	DefaultKubernetesFirstConsecutiveStaticIPOffset = 5
	// DefaultKubernetesMaxPods is the maximum number of pods to run on a node.
	DefaultKubernetesMaxPods = 110
	// DefaultKubernetesMaxPodsVNETIntegrated is the maximum number of pods to run on a node when VNET integration is enabled.
	DefaultKubernetesMaxPodsVNETIntegrated = 30
	// DefaultKubernetesClusterDomain is the dns suffix used in the cluster (used as a SAN in the PKI generation)
	DefaultKubernetesClusterDomain = "cluster.local"
	// DefaultInternalLbStaticIPOffset specifies the offset of the internal LoadBalancer's IP
	// address relative to the first consecutive Kubernetes static IP
	DefaultInternalLbStaticIPOffset = 10
	// NetworkPolicyNone is the string expression for no network policy
	NetworkPolicyNone = "none"
	// NetworkPluginKubenet is the string expression for kubenet network plugin
	NetworkPluginKubenet = "kubenet"
	// DefaultNetworkPolicy defines the network policy to use by default
	DefaultNetworkPolicy = NetworkPolicyNone
	// DefaultNetworkPolicyWindows defines the network policy to use by default for clusters with Windows agent pools
	DefaultNetworkPolicyWindows = NetworkPolicyNone
	// DefaultKubernetesNodeStatusUpdateFrequency is 10s, see --node-status-update-frequency at https://kubernetes.io/docs/admin/kubelet/
	DefaultKubernetesNodeStatusUpdateFrequency = "10s"
	// DefaultKubernetesHardEvictionThreshold is memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%, see --eviction-hard at https://kubernetes.io/docs/admin/kubelet/
	DefaultKubernetesHardEvictionThreshold = "memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%"
	// DefaultKubernetesCtrlMgrNodeMonitorGracePeriod is 40s, see --node-monitor-grace-period at https://kubernetes.io/docs/admin/kube-controller-manager/
	DefaultKubernetesCtrlMgrNodeMonitorGracePeriod = "40s"
	// DefaultKubernetesCtrlMgrPodEvictionTimeout is 5m0s, see --pod-eviction-timeout at https://kubernetes.io/docs/admin/kube-controller-manager/
	DefaultKubernetesCtrlMgrPodEvictionTimeout = "5m0s"
	// DefaultKubernetesCtrlMgrRouteReconciliationPeriod is 10s, see --route-reconciliation-period at https://kubernetes.io/docs/admin/kube-controller-manager/
	DefaultKubernetesCtrlMgrRouteReconciliationPeriod = "10s"
	// DefaultKubernetesCloudProviderBackoff is false to disable cloudprovider backoff implementation for API calls
	DefaultKubernetesCloudProviderBackoff = false
	// DefaultKubernetesCloudProviderBackoffRetries is 6, takes effect if DefaultKubernetesCloudProviderBackoff is true
	DefaultKubernetesCloudProviderBackoffRetries = 6
	// DefaultKubernetesCloudProviderBackoffJitter is 1, takes effect if DefaultKubernetesCloudProviderBackoff is true
	DefaultKubernetesCloudProviderBackoffJitter = 1.0
	// DefaultKubernetesCloudProviderBackoffDuration is 5, takes effect if DefaultKubernetesCloudProviderBackoff is true
	DefaultKubernetesCloudProviderBackoffDuration = 5
	// DefaultKubernetesCloudProviderBackoffExponent is 1.5, takes effect if DefaultKubernetesCloudProviderBackoff is true
	DefaultKubernetesCloudProviderBackoffExponent = 1.5
	// DefaultKubernetesCloudProviderRateLimit is false to disable cloudprovider rate limiting implementation for API calls
	DefaultKubernetesCloudProviderRateLimit = false
	// DefaultKubernetesCloudProviderRateLimitQPS is 3, takes effect if DefaultKubernetesCloudProviderRateLimit is true
	DefaultKubernetesCloudProviderRateLimitQPS = 3.0
	// DefaultKubernetesCloudProviderRateLimitBucket is 10, takes effect if DefaultKubernetesCloudProviderRateLimit is true
	DefaultKubernetesCloudProviderRateLimitBucket = 10
	// DefaultTillerAddonName is the name of the tiller addon deployment
	DefaultTillerAddonName = "tiller"
	// DefaultACIConnectorAddonName is the name of the tiller addon deployment
	DefaultACIConnectorAddonName = "aci-connector"
	// DefaultDashboardAddonName is the name of the kubernetes-dashboard addon deployment
	DefaultDashboardAddonName = "kubernetes-dashboard"
	// DefaultTillerImage defines the Helm Tiller deployment version on Kubernetes Clusters
	// TODO deprecate this usage, we should be favoring a more frequent upgrade cycle that pins fresh tiller versions to specific k8s versions
	DefaultTillerImage = "tiller:v2.6.2"
	// DefaultACIConnectorImage defines the ACI Connector deployment version on Kubernetes Clusters
	DefaultACIConnectorImage = "virtual-kubelet:latest"
	// DefaultKubernetesDNSServiceIP specifies the IP address that kube-dns
	// listens on by default. must by in the default Service CIDR range.
	DefaultKubernetesDNSServiceIP = "10.0.0.10"
	// DefaultKubernetesServiceCIDR specifies the IP subnet that kubernetes will
	// create Service IPs within.
	DefaultKubernetesServiceCIDR = "10.0.0.0/16"
	//DefaultKubernetesGCHighThreshold specifies the value for  for the image-gc-high-threshold kubelet flag
	DefaultKubernetesGCHighThreshold = 85
	//DefaultKubernetesGCLowThreshold specifies the value for the image-gc-low-threshold kubelet flag
	DefaultKubernetesGCLowThreshold = 80
	// DefaultGeneratorCode specifies the source generator of the cluster template.
	DefaultGeneratorCode = "acsengine"
	// DefaultOrchestratorName specifies the 3 character orchestrator code of the cluster template and affects resource naming.
	DefaultOrchestratorName = "k8s"
	// DefaultEtcdVersion specifies the default etcd version to install
	DefaultEtcdVersion = "3.2.11"
	// DefaultEtcdDiskSize specifies the default size for Kubernetes master etcd disk volumes in GB
	DefaultEtcdDiskSize = "128"
	// DefaultReschedulerImage defines the rescheduler deployment version on Kubernetes Clusters
	DefaultReschedulerImage = "rescheduler:v0.3.1"
	// DefaultReschedulerAddonName is the name of the rescheduler addon deployment
	DefaultReschedulerAddonName = "rescheduler"
	// DefaultKubernetesKubeletMaxPods is the max pods per kubelet
	DefaultKubernetesKubeletMaxPods = 110
	// DefaultMasterEtcdServerPort is the default etcd server port for Kubernetes master nodes
	DefaultMasterEtcdServerPort = 2380
	// DefaultMasterEtcdClientPort is the default etcd client port for Kubernetes master nodes
	DefaultMasterEtcdClientPort = 2379
)
View Source
const (
	//DefaultExtensionsRootURL  Root URL for extensions
	DefaultExtensionsRootURL = "https://raw.githubusercontent.com/Azure/acs-engine/master/"
	// DefaultDockerEngineRepo for grabbing docker engine packages
	DefaultDockerEngineRepo = "https://download.docker.com/linux/ubuntu"
	// DefaultDockerComposeURL for grabbing docker images
	DefaultDockerComposeURL = "https://github.com/docker/compose/releases/download"

	//AzureEdgeDCOSBootstrapDownloadURL is the azure edge CDN download url
	AzureEdgeDCOSBootstrapDownloadURL = "https://dcosio.azureedge.net/dcos/%s/bootstrap/%s.bootstrap.tar.xz"
	//AzureChinaCloudDCOSBootstrapDownloadURL is the China specific DCOS package download url.
	AzureChinaCloudDCOSBootstrapDownloadURL = "https://acsengine.blob.core.chinacloudapi.cn/dcos/%s.bootstrap.tar.xz"
)
View Source
const (
	// ValidityDuration specifies the duration an TLS certificate is valid
	ValidityDuration = time.Hour * 24 * 365 * 2
	// PkiKeySize is the size in bytes of the PKI key
	PkiKeySize = 4096
)
View Source
const (
	// AzureCniPluginVer specifies version of Azure CNI plugin, which has been mirrored from
	// https://github.com/Azure/azure-container-networking/releases/download/${AZURE_PLUGIN_VER}/azure-vnet-cni-linux-amd64-${AZURE_PLUGIN_VER}.tgz
	// to https://acs-mirror.azureedge.net/cni/
	AzureCniPluginVer = "v1.0.0"
)
View Source
const (
	//DefaultConfigurationScriptRootURL  Root URL for configuration script (used for script extension on RHEL)
	DefaultConfigurationScriptRootURL = "https://raw.githubusercontent.com/Azure/acs-engine/master/parts/"
)
View Source
const (
	// SSHKeySize is the size (in bytes) of SSH key to create
	SSHKeySize = 4096
)

Variables

View Source
var (
	//DefaultKubernetesSpecConfig is the default Docker image source of Kubernetes
	DefaultKubernetesSpecConfig = KubernetesSpecConfig{
		KubernetesImageBase:              "k8s-gcrio.azureedge.net/",
		TillerImageBase:                  "gcrio.azureedge.net/kubernetes-helm/",
		ACIConnectorImageBase:            "microsoft/",
		EtcdDownloadURLBase:              "https://acs-mirror.azureedge.net/github-coreos",
		KubeBinariesSASURLBase:           "https://acs-mirror.azureedge.net/wink8s/",
		WindowsTelemetryGUID:             "fb801154-36b9-41bc-89c2-f4d4f05472b0",
		CNIPluginsDownloadURL:            "https://acs-mirror.azureedge.net/cni/cni-plugins-amd64-latest.tgz",
		VnetCNILinuxPluginsDownloadURL:   "https://acs-mirror.azureedge.net/cni/azure-vnet-cni-linux-amd64-" + AzureCniPluginVer + ".tgz",
		VnetCNIWindowsPluginsDownloadURL: "https://acs-mirror.azureedge.net/cni/azure-vnet-cni-windows-amd64-" + AzureCniPluginVer + ".zip",
	}

	//DefaultDCOSSpecConfig is the default DC/OS binary download URL.
	DefaultDCOSSpecConfig = DCOSSpecConfig{
		DCOS188BootstrapDownloadURL:     fmt.Sprintf(AzureEdgeDCOSBootstrapDownloadURL, "stable", "5df43052907c021eeb5de145419a3da1898c58a5"),
		DCOS190BootstrapDownloadURL:     fmt.Sprintf(AzureEdgeDCOSBootstrapDownloadURL, "stable", "58fd0833ce81b6244fc73bf65b5deb43217b0bd7"),
		DCOS110BootstrapDownloadURL:     fmt.Sprintf(AzureEdgeDCOSBootstrapDownloadURL, "stable", "e38ab2aa282077c8eb7bf103c6fff7b0f08db1a4"),
		DCOSWindowsBootstrapDownloadURL: "http://dcos-win.westus.cloudapp.azure.com/dcos-windows/stable/",
	}

	//DefaultDockerSpecConfig is the default Docker engine repo.
	DefaultDockerSpecConfig = DockerSpecConfig{
		DockerEngineRepo:         "https://aptdocker.azureedge.net/repo",
		DockerComposeDownloadURL: "https://github.com/docker/compose/releases/download",
	}

	//DefaultUbuntuImageConfig is the default Linux distribution.
	DefaultUbuntuImageConfig = AzureOSImageConfig{
		ImageOffer:     "UbuntuServer",
		ImageSku:       "16.04-LTS",
		ImagePublisher: "Canonical",
		ImageVersion:   "16.04.201801050",
	}

	//DefaultRHELOSImageConfig is the RHEL Linux distribution.
	DefaultRHELOSImageConfig = AzureOSImageConfig{
		ImageOffer:     "RHEL",
		ImageSku:       "7.3",
		ImagePublisher: "RedHat",
		ImageVersion:   "latest",
	}

	//DefaultCoreOSImageConfig is the CoreOS Linux distribution.
	DefaultCoreOSImageConfig = AzureOSImageConfig{
		ImageOffer:     "CoreOS",
		ImageSku:       "Stable",
		ImagePublisher: "CoreOS",
		ImageVersion:   "latest",
	}

	//AzureCloudSpec is the default configurations for global azure.
	AzureCloudSpec = AzureEnvironmentSpecConfig{

		DockerSpecConfig: DefaultDockerSpecConfig,

		KubernetesSpecConfig: DefaultKubernetesSpecConfig,
		DCOSSpecConfig:       DefaultDCOSSpecConfig,

		EndpointConfig: AzureEndpointConfig{
			ResourceManagerVMDNSSuffix: "cloudapp.azure.com",
		},

		OSImageConfig: map[api.Distro]AzureOSImageConfig{
			api.Ubuntu: DefaultUbuntuImageConfig,
			api.RHEL:   DefaultRHELOSImageConfig,
			api.CoreOS: DefaultCoreOSImageConfig,
		},
	}

	//AzureGermanCloudSpec is the German cloud config.
	AzureGermanCloudSpec = AzureEnvironmentSpecConfig{
		DockerSpecConfig:     DefaultDockerSpecConfig,
		KubernetesSpecConfig: DefaultKubernetesSpecConfig,
		DCOSSpecConfig:       DefaultDCOSSpecConfig,
		EndpointConfig: AzureEndpointConfig{
			ResourceManagerVMDNSSuffix: "cloudapp.microsoftazure.de",
		},
		OSImageConfig: map[api.Distro]AzureOSImageConfig{
			api.Ubuntu: {
				ImageOffer:     "UbuntuServer",
				ImageSku:       "16.04-LTS",
				ImagePublisher: "Canonical",
				ImageVersion:   "16.04.201701130",
			},
			api.RHEL:   DefaultRHELOSImageConfig,
			api.CoreOS: DefaultCoreOSImageConfig,
		},
	}

	//AzureUSGovernmentCloud is the US government config.
	AzureUSGovernmentCloud = AzureEnvironmentSpecConfig{
		DockerSpecConfig:     DefaultDockerSpecConfig,
		KubernetesSpecConfig: DefaultKubernetesSpecConfig,
		DCOSSpecConfig:       DefaultDCOSSpecConfig,
		EndpointConfig: AzureEndpointConfig{
			ResourceManagerVMDNSSuffix: "cloudapp.usgovcloudapi.net",
		},
		OSImageConfig: map[api.Distro]AzureOSImageConfig{
			api.Ubuntu: DefaultUbuntuImageConfig,
			api.RHEL:   DefaultRHELOSImageConfig,
			api.CoreOS: DefaultCoreOSImageConfig,
		},
	}

	//AzureChinaCloudSpec is the configurations for Azure China (Mooncake)
	AzureChinaCloudSpec = AzureEnvironmentSpecConfig{

		DockerSpecConfig: DockerSpecConfig{
			DockerEngineRepo:         "https://mirror.azure.cn/docker-engine/apt/repo/",
			DockerComposeDownloadURL: "https://mirror.azure.cn/docker-toolbox/linux/compose",
		},

		KubernetesSpecConfig: KubernetesSpecConfig{
			KubernetesImageBase:              "crproxy.trafficmanager.net:6000/google_containers/",
			TillerImageBase:                  "crproxy.trafficmanager.net:6000/kubernetes-helm/",
			ACIConnectorImageBase:            DefaultKubernetesSpecConfig.ACIConnectorImageBase,
			EtcdDownloadURLBase:              DefaultKubernetesSpecConfig.EtcdDownloadURLBase,
			KubeBinariesSASURLBase:           DefaultKubernetesSpecConfig.KubeBinariesSASURLBase,
			WindowsTelemetryGUID:             DefaultKubernetesSpecConfig.WindowsTelemetryGUID,
			CNIPluginsDownloadURL:            DefaultKubernetesSpecConfig.CNIPluginsDownloadURL,
			VnetCNILinuxPluginsDownloadURL:   DefaultKubernetesSpecConfig.VnetCNILinuxPluginsDownloadURL,
			VnetCNIWindowsPluginsDownloadURL: DefaultKubernetesSpecConfig.VnetCNIWindowsPluginsDownloadURL,
		},
		DCOSSpecConfig: DCOSSpecConfig{
			DCOS188BootstrapDownloadURL:     fmt.Sprintf(AzureChinaCloudDCOSBootstrapDownloadURL, "5df43052907c021eeb5de145419a3da1898c58a5"),
			DCOSWindowsBootstrapDownloadURL: "https://dcosdevstorage.blob.core.windows.net/dcos-windows",
			DCOS190BootstrapDownloadURL:     fmt.Sprintf(AzureChinaCloudDCOSBootstrapDownloadURL, "58fd0833ce81b6244fc73bf65b5deb43217b0bd7"),
		},

		EndpointConfig: AzureEndpointConfig{
			ResourceManagerVMDNSSuffix: "cloudapp.chinacloudapi.cn",
		},
		OSImageConfig: map[api.Distro]AzureOSImageConfig{
			api.Ubuntu: {
				ImageOffer:     "UbuntuServer",
				ImageSku:       "16.04-LTS",
				ImagePublisher: "Canonical",
				ImageVersion:   "latest",
			},
			api.RHEL:   DefaultRHELOSImageConfig,
			api.CoreOS: DefaultCoreOSImageConfig,
		},
	}

	// DefaultTillerAddonsConfig is the default tiller Kubernetes addon Config
	DefaultTillerAddonsConfig = api.KubernetesAddon{
		Name:    DefaultTillerAddonName,
		Enabled: pointerToBool(api.DefaultTillerAddonEnabled),
		Containers: []api.KubernetesContainerSpec{
			{
				Name:           DefaultTillerAddonName,
				CPURequests:    "50m",
				MemoryRequests: "150Mi",
				CPULimits:      "50m",
				MemoryLimits:   "150Mi",
			},
		},
	}

	// DefaultACIConnectorAddonsConfig is the default ACI Connector Kubernetes addon Config
	DefaultACIConnectorAddonsConfig = api.KubernetesAddon{
		Name:    DefaultACIConnectorAddonName,
		Enabled: pointerToBool(api.DefaultACIConnectorAddonEnabled),
		Config: map[string]string{
			"region":   "westus",
			"nodeName": "aci-connector",
			"os":       "Linux",
			"taint":    "azure.com/aci",
		},
		Containers: []api.KubernetesContainerSpec{
			{
				Name:           DefaultACIConnectorAddonName,
				CPURequests:    "50m",
				MemoryRequests: "150Mi",
				CPULimits:      "50m",
				MemoryLimits:   "150Mi",
			},
		},
	}

	// DefaultDashboardAddonsConfig is the default kubernetes-dashboard addon Config
	DefaultDashboardAddonsConfig = api.KubernetesAddon{
		Name:    DefaultDashboardAddonName,
		Enabled: pointerToBool(api.DefaultDashboardAddonEnabled),
		Containers: []api.KubernetesContainerSpec{
			{
				Name:           DefaultDashboardAddonName,
				CPURequests:    "300m",
				MemoryRequests: "150Mi",
				CPULimits:      "300m",
				MemoryLimits:   "150Mi",
			},
		},
	}

	// DefaultReschedulerAddonsConfig is the default rescheduler Kubernetes addon Config
	DefaultReschedulerAddonsConfig = api.KubernetesAddon{
		Name:    DefaultReschedulerAddonName,
		Enabled: pointerToBool(api.DefaultReschedulerAddonEnabled),
		Containers: []api.KubernetesContainerSpec{
			{
				Name:           DefaultReschedulerAddonName,
				CPURequests:    "10m",
				MemoryRequests: "100Mi",
				CPULimits:      "10m",
				MemoryLimits:   "100Mi",
			},
		},
	}
)
View Source
var AzureLocations = []string{
	"australiaeast",
	"australiasoutheast",
	"brazilsouth",
	"canadacentral",
	"canadaeast",
	"centralindia",
	"centralus",
	"centraluseuap",
	"chinaeast",
	"chinanorth",
	"eastasia",
	"eastus",
	"eastus2",
	"eastus2euap",
	"japaneast",
	"japanwest",
	"koreacentral",
	"koreasouth",
	"northcentralus",
	"northeurope",
	"southcentralus",
	"southeastasia",
	"southindia",
	"uksouth",
	"ukwest",
	"westcentralus",
	"westeurope",
	"westindia",
	"westus",
	"westus2",
	"chinaeast",
	"chinanorth",
	"germanycentral",
	"germanynortheast",
	"usgovvirginia",
	"usgoviowa",
	"usgovarizona",
	"usgovtexas",
}

AzureLocations provides all azure regions in prod. Related powershell to refresh this list:

Get-AzureRmLocation | Select-Object -Property Location
View Source
var KubeConfigs = map[string]map[string]string{
	common.KubernetesVersion1Dot9Dot1: {
		"hyperkube":                 "hyperkube-amd64:v1.9.1",
		"ccm":                       "cloud-controller-manager-amd64:v1.9.1",
		"dockerEngineVersion":       "1.12.*",
		DefaultDashboardAddonName:   "kubernetes-dashboard-amd64:v1.8.1",
		"exechealthz":               "exechealthz-amd64:1.2",
		"addonresizer":              "addon-resizer:1.7",
		"heapster":                  "heapster-amd64:v1.4.2",
		"dns":                       "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":              "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                   "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                     "pause-amd64:3.0",
		DefaultTillerAddonName:      DefaultTillerImage,
		DefaultReschedulerAddonName: DefaultReschedulerImage,
		"windowszip":                "v1.9.1-1int.zip",
		"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),
	},
	common.KubernetesVersion1Dot9Dot0: {
		"hyperkube":                 "hyperkube-amd64:v1.9.0",
		"ccm":                       "cloud-controller-manager-amd64:v1.9.0",
		"dockerEngineVersion":       "1.12.*",
		DefaultDashboardAddonName:   "kubernetes-dashboard-amd64:v1.8.1",
		"exechealthz":               "exechealthz-amd64:1.2",
		"addonresizer":              "addon-resizer:1.7",
		"heapster":                  "heapster-amd64:v1.4.2",
		"dns":                       "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":              "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                   "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                     "pause-amd64:3.0",
		DefaultTillerAddonName:      DefaultTillerImage,
		DefaultReschedulerAddonName: DefaultReschedulerImage,
		"windowszip":                "v1.9.0-1int.zip",
		"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),
	},
	common.KubernetesVersion1Dot8Dot7: {
		"hyperkube":                 "hyperkube-amd64:v1.8.7",
		"ccm":                       "cloud-controller-manager-amd64:v1.8.7",
		"dockerEngineVersion":       "1.12.*",
		DefaultDashboardAddonName:   "kubernetes-dashboard-amd64:v1.8.1",
		"exechealthz":               "exechealthz-amd64:1.2",
		"addonresizer":              "addon-resizer:1.7",
		"heapster":                  "heapster-amd64:v1.4.2",
		"dns":                       "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":              "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                   "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                     "pause-amd64:3.0",
		DefaultTillerAddonName:      DefaultTillerImage,
		DefaultReschedulerAddonName: DefaultReschedulerImage,
		"windowszip":                "v1.8.7-1int.zip",
		"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),
	},
	common.KubernetesVersion1Dot8Dot6: {
		"hyperkube":                 "hyperkube-amd64:v1.8.6",
		"ccm":                       "cloud-controller-manager-amd64:v1.8.6",
		"dockerEngineVersion":       "1.12.*",
		DefaultDashboardAddonName:   "kubernetes-dashboard-amd64:v1.8.1",
		"exechealthz":               "exechealthz-amd64:1.2",
		"addonresizer":              "addon-resizer:1.7",
		"heapster":                  "heapster-amd64:v1.4.2",
		"dns":                       "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":              "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                   "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                     "pause-amd64:3.0",
		DefaultTillerAddonName:      DefaultTillerImage,
		DefaultReschedulerAddonName: DefaultReschedulerImage,
		"windowszip":                "v1.8.6-1int.zip",
		"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),
	},
	common.KubernetesVersion1Dot8Dot4: {
		"hyperkube":                 "hyperkube-amd64:v1.8.4",
		"ccm":                       "cloud-controller-manager-amd64:v1.8.4",
		"dockerEngineVersion":       "1.12.*",
		DefaultDashboardAddonName:   "kubernetes-dashboard-amd64:v1.8.0",
		"exechealthz":               "exechealthz-amd64:1.2",
		"addonresizer":              "addon-resizer:1.7",
		"heapster":                  "heapster-amd64:v1.4.2",
		"dns":                       "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":              "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                   "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                     "pause-amd64:3.0",
		DefaultTillerAddonName:      DefaultTillerImage,
		DefaultReschedulerAddonName: DefaultReschedulerImage,
		"windowszip":                "v1.8.4-1int.zip",
		"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),
	},
	common.KubernetesVersion1Dot8Dot2: {
		"hyperkube":                  "hyperkube-amd64:v1.8.2",
		"ccm":                        "cloud-controller-manager-amd64:v1.8.2",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.7.1",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.2",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.8.2-2int.zip",
		"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),
	},
	common.KubernetesVersion1Dot8Dot1: {
		"hyperkube":                  "hyperkube-amd64:v1.8.1",
		"ccm":                        "cloud-controller-manager-amd64:v1.8.1",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.7.1",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.2",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.8.1-2int.zip",
		"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),
	},
	common.KubernetesVersion1Dot8Dot0: {
		"hyperkube":                  "hyperkube-amd64:v1.8.0",
		"ccm":                        "cloud-controller-manager-amd64:v1.8.0",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.7.1",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.2",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.8.0-2int.zip",
		"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),
	},
	common.KubernetesVersion1Dot7Dot12: {
		"hyperkube":                  "hyperkube-amd64:v1.7.12",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.2",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.7.12-2int.zip",
		"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),
	},
	common.KubernetesVersion1Dot7Dot10: {
		"hyperkube":                  "hyperkube-amd64:v1.7.10",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.2",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.7.10-1int.zip",
		"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),
	},
	common.KubernetesVersion1Dot7Dot9: {
		"hyperkube":                  "hyperkube-amd64:v1.7.9",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.2",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.7.9-2int.zip",
		"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),
	},
	common.KubernetesVersion1Dot7Dot7: {
		"hyperkube":                  "hyperkube-amd64:v1.7.7",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.2",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.7.7-2int.zip",
		"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),
	},
	common.KubernetesVersion1Dot7Dot5: {
		"hyperkube":                  "hyperkube-amd64:v1.7.5",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.2",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.4",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.4",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.7.5-4int.zip",
		"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),
	},
	common.KubernetesVersion1Dot7Dot4: {
		"hyperkube":                  "hyperkube-amd64:v1.7.4",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.1",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.4",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.4",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.7.4-2int.zip",
		"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),
	},
	common.KubernetesVersion1Dot7Dot2: {
		"hyperkube":                  "hyperkube-amd64:v1.7.2",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.4.1",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.4",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.4",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"windowszip":                 "v1.7.2-1int.zip",
		"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),
	},
	common.KubernetesVersion1Dot7Dot1: {
		"hyperkube":                  "hyperkube-amd64:v1.7.1",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.1",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster:v1.4.0",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.4",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.4",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"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),
	},
	common.KubernetesVersion1Dot7Dot0: {
		"hyperkube":                  "hyperkube-amd64:v1.7.0",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.1",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster:v1.4.0",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.4",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.4",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"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),
	},
	common.KubernetesVersion1Dot6Dot13: {
		"hyperkube":                  "hyperkube-amd64:v1.6.13",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.3.0",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"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),
	},
	common.KubernetesVersion1Dot6Dot12: {
		"hyperkube":                  "hyperkube-amd64:v1.6.12",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.3.0",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"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),
	},
	common.KubernetesVersion1Dot6Dot11: {
		"hyperkube":                  "hyperkube-amd64:v1.6.11",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.3.0",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.5",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.5",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"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),
	},
	common.KubernetesVersion1Dot6Dot9: {
		"hyperkube":                  "hyperkube-amd64:v1.6.9",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.3.0",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.4",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.4",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"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),
	},
	common.KubernetesVersion1Dot6Dot6: {
		"hyperkube":                  "hyperkube-amd64:v1.6.6",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.6.3",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.7",
		"heapster":                   "heapster-amd64:v1.3.0",
		"dns":                        "k8s-dns-kube-dns-amd64:1.14.4",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "k8s-dns-dnsmasq-nanny-amd64:1.14.4",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       DefaultTillerImage,
		DefaultACIConnectorAddonName: DefaultACIConnectorImage,
		DefaultReschedulerAddonName:  DefaultReschedulerImage,
		"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),
	},
	common.KubernetesVersion1Dot5Dot8: {
		"hyperkube":                  "hyperkube-amd64:v1.5.8",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.5.1",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.6",
		"heapster":                   "heapster:v1.2.0",
		"dns":                        "kubedns-amd64:1.7",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "kube-dnsmasq-amd64:1.3",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       "tiller:v2.5.1",
		DefaultACIConnectorAddonName: "virtual-kubelet:latest",
		"nodestatusfreq":             DefaultKubernetesNodeStatusUpdateFrequency,
		"nodegraceperiod":            DefaultKubernetesCtrlMgrNodeMonitorGracePeriod,
		"podeviction":                DefaultKubernetesCtrlMgrPodEvictionTimeout,
		"routeperiod":                DefaultKubernetesCtrlMgrRouteReconciliationPeriod,
		"gchighthreshold":            strconv.Itoa(DefaultKubernetesGCHighThreshold),
		"gclowthreshold":             strconv.Itoa(DefaultKubernetesGCLowThreshold),
	},
	common.KubernetesVersion1Dot5Dot7: {
		"hyperkube":                  "hyperkube-amd64:v1.5.7",
		"dockerEngineVersion":        "1.12.*",
		DefaultDashboardAddonName:    "kubernetes-dashboard-amd64:v1.5.1",
		"exechealthz":                "exechealthz-amd64:1.2",
		"addonresizer":               "addon-resizer:1.6",
		"heapster":                   "heapster:v1.2.0",
		"dns":                        "kubedns-amd64:1.7",
		"addonmanager":               "kube-addon-manager-amd64:v6.5",
		"dnsmasq":                    "kube-dnsmasq-amd64:1.3",
		"pause":                      "pause-amd64:3.0",
		DefaultTillerAddonName:       "tiller:v2.5.1",
		DefaultACIConnectorAddonName: "virtual-kubelet:latest",
		"nodestatusfreq":             DefaultKubernetesNodeStatusUpdateFrequency,
		"nodegraceperiod":            DefaultKubernetesCtrlMgrNodeMonitorGracePeriod,
		"podeviction":                DefaultKubernetesCtrlMgrPodEvictionTimeout,
		"routeperiod":                DefaultKubernetesCtrlMgrRouteReconciliationPeriod,
		"gchighthreshold":            strconv.Itoa(DefaultKubernetesGCHighThreshold),
		"gclowthreshold":             strconv.Itoa(DefaultKubernetesGCLowThreshold),
	},
}

KubeConfigs represents Docker images used for Kubernetes components based on Kubernetes versions (major.minor.patch)

Functions

func CreatePki

func CreatePki(extraFQDNs []string, extraIPs []net.IP, clusterDomain string, caPair *PkiKeyCertPair, masterCount int) (*PkiKeyCertPair, *PkiKeyCertPair, *PkiKeyCertPair, *PkiKeyCertPair, *PkiKeyCertPair, []*PkiKeyCertPair, error)

CreatePki creates PKI certificates

func FormatAzureProdFQDN

func FormatAzureProdFQDN(fqdnPrefix string, location string) string

FormatAzureProdFQDN constructs an Azure prod fqdn

func FormatAzureProdFQDNs

func FormatAzureProdFQDNs(fqdnPrefix string) []string

FormatAzureProdFQDNs constructs all possible Azure prod fqdn

func GenerateClusterID

func GenerateClusterID(properties *api.Properties) string

GenerateClusterID creates a unique 8 string cluster ID

func GenerateKubeConfig

func GenerateKubeConfig(properties *api.Properties, location string) (string, error)

GenerateKubeConfig returns a JSON string representing the KubeConfig

func GetClassicAllowedSizes

func GetClassicAllowedSizes() string

GetClassicAllowedSizes returns the classic allowed sizes

func GetClassicSizeMap

func GetClassicSizeMap() string

GetClassicSizeMap returns the size / storage map

func GetCloudTargetEnv

func GetCloudTargetEnv(location string) string

GetCloudTargetEnv determines and returns whether the region is a sovereign cloud which have their own data compliance regulations (China/Germany/USGov) or standard

Azure public cloud

func GetDCOSMasterAllowedSizes

func GetDCOSMasterAllowedSizes() string

GetDCOSMasterAllowedSizes returns the master allowed sizes

func GetKubernetesAgentAllowedSizes

func GetKubernetesAgentAllowedSizes() string

GetKubernetesAgentAllowedSizes returns the allowed sizes for Kubernetes agent

func GetMasterAgentAllowedSizes

func GetMasterAgentAllowedSizes() string

GetMasterAgentAllowedSizes returns the agent allowed sizes

func GetSizeMap

func GetSizeMap() string

GetSizeMap returns the size / storage map

func GetTenantID

func GetTenantID(env azure.Environment, subscriptionID string) (string, error)

GetTenantID figures out the AAD tenant ID of the subscription by making an unauthenticated request to the Get Subscription Details endpoint and parses the value from WWW-Authenticate header.

func SetPropertiesDefaults

func SetPropertiesDefaults(cs *api.ContainerService) (bool, error)

SetPropertiesDefaults for the container Properties, returns true if certs are generated

func ValidateDistro added in v0.7.0

func ValidateDistro(cs *api.ContainerService) bool

ValidateDistro checks if the requested orchestrator type is supported on the requested Linux distro.

Types

type ArtifactWriter added in v0.5.0

type ArtifactWriter struct {
	Translator *i18n.Translator
}

ArtifactWriter represents the object that writes artifacts

func (*ArtifactWriter) WriteTLSArtifacts added in v0.5.0

func (w *ArtifactWriter) WriteTLSArtifacts(containerService *api.ContainerService, apiVersion, template, parameters, artifactsDir string, certsGenerated bool, parametersOnly bool) error

WriteTLSArtifacts saves TLS certificates and keys to the server filesystem

type AzureEndpointConfig added in v0.6.0

type AzureEndpointConfig struct {
	ResourceManagerVMDNSSuffix string
}

AzureEndpointConfig describes an Azure endpoint

type AzureEnvironmentSpecConfig

type AzureEnvironmentSpecConfig struct {
	DockerSpecConfig     DockerSpecConfig
	KubernetesSpecConfig KubernetesSpecConfig
	DCOSSpecConfig       DCOSSpecConfig
	EndpointConfig       AzureEndpointConfig
	OSImageConfig        map[api.Distro]AzureOSImageConfig
}

AzureEnvironmentSpecConfig is the overall configuration differences in different cloud environments.

func GetCloudSpecConfig

func GetCloudSpecConfig(location string) AzureEnvironmentSpecConfig

GetCloudSpecConfig returns the kubenernetes container images url configurations based on the deploy target environment for example: if the target is the public azure, then the default container image url should be k8s-gcrio.azureedge.net/... if the target is azure china, then the default container image should be mirror.azure.cn:5000/google_container/...

type AzureOSImageConfig added in v0.6.0

type AzureOSImageConfig struct {
	ImageOffer     string
	ImageSku       string
	ImagePublisher string
	ImageVersion   string
}

AzureOSImageConfig describes an Azure OS image

type Context added in v0.5.0

type Context struct {
	Translator *i18n.Translator
}

Context represents the object that is passed to the package

type DCOSNodeType

type DCOSNodeType string

DCOSNodeType represents the type of DCOS Node

const (
	// DCOSMaster represents the master node type
	DCOSMaster DCOSNodeType = "DCOSMaster"
	// DCOSPrivateAgent represents the private agent node type
	DCOSPrivateAgent DCOSNodeType = "DCOSPrivateAgent"
	// DCOSPublicAgent represents the public agent node type
	DCOSPublicAgent DCOSNodeType = "DCOSPublicAgent"
)

type DCOSSpecConfig

type DCOSSpecConfig struct {
	DCOS188BootstrapDownloadURL     string
	DCOS190BootstrapDownloadURL     string
	DCOS110BootstrapDownloadURL     string
	DCOSWindowsBootstrapDownloadURL string
}

DCOSSpecConfig is the configurations of DCOS

type DockerSpecConfig

type DockerSpecConfig struct {
	DockerEngineRepo         string
	DockerComposeDownloadURL string
}

DockerSpecConfig is the configurations of docker

type FileSaver added in v0.5.0

type FileSaver struct {
	Translator *i18n.Translator
}

FileSaver represents the object that save string or byte data to file

func (*FileSaver) SaveFile added in v0.5.0

func (f *FileSaver) SaveFile(dir string, file string, data []byte) error

SaveFile saves binary data to file

func (*FileSaver) SaveFileString added in v0.5.0

func (f *FileSaver) SaveFileString(dir string, file string, data string) error

SaveFileString saves string to file

type KeyVaultID

type KeyVaultID struct {
	ID string `json:"id"`
}

KeyVaultID represents a KeyVault instance on Azure

type KeyVaultRef

type KeyVaultRef struct {
	KeyVault      KeyVaultID `json:"keyVault"`
	SecretName    string     `json:"secretName"`
	SecretVersion string     `json:"secretVersion,omitempty"`
}

KeyVaultRef represents a reference to KeyVault instance on Azure

type KubernetesSpecConfig

type KubernetesSpecConfig struct {
	KubernetesImageBase              string
	TillerImageBase                  string
	ACIConnectorImageBase            string
	EtcdDownloadURLBase              string
	KubeBinariesSASURLBase           string
	WindowsTelemetryGUID             string
	CNIPluginsDownloadURL            string
	VnetCNILinuxPluginsDownloadURL   string
	VnetCNIWindowsPluginsDownloadURL string
}

KubernetesSpecConfig is the kubernetes container images used.

type PkiKeyCertPair

type PkiKeyCertPair struct {
	CertificatePem string
	PrivateKeyPem  string
}

PkiKeyCertPair represents an PKI public and private cert pair

type SSHCreator added in v0.5.0

type SSHCreator struct {
	Translator *i18n.Translator
}

SSHCreator represents the object that creates SSH key pair

func (*SSHCreator) CreateSSH added in v0.5.0

func (s *SSHCreator) CreateSSH(rg io.Reader) (privateKey *rsa.PrivateKey, publicKeyString string, err error)

CreateSSH creates an SSH key pair.

func (*SSHCreator) CreateSaveSSH added in v0.5.0

func (s *SSHCreator) CreateSaveSSH(username, outputDirectory string) (privateKey *rsa.PrivateKey, publicKeyString string, err error)

CreateSaveSSH generates and stashes an SSH key pair.

type TemplateGenerator

type TemplateGenerator struct {
	ClassicMode bool
	Translator  *i18n.Translator
}

TemplateGenerator represents the object that performs the template generation.

func InitializeTemplateGenerator

func InitializeTemplateGenerator(ctx Context, classicMode bool) (*TemplateGenerator, error)

InitializeTemplateGenerator creates a new template generator object

func (*TemplateGenerator) GenerateTemplate

func (t *TemplateGenerator) GenerateTemplate(containerService *api.ContainerService, generatorCode string) (templateRaw string, parametersRaw string, certsGenerated bool, err error)

GenerateTemplate generates the template from the API Model

type V20160330ContainerService

type V20160330ContainerService struct {
	api.TypeMeta
	*v20160330.ContainerService
}

V20160330ContainerService is the type we read and write from file needed because the json that is sent to ARM and acs-engine is different from the json that the ACS RP Api gets from ARM

type VlabsContainerService

type VlabsContainerService struct {
	api.TypeMeta
	*vlabs.ContainerService
}

VlabsContainerService is the type we read and write from file needed because the json that is sent to ARM and acs-engine is different from the json that the ACS RP Api gets from ARM

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL