func getComponentDefaultContainerImage()

in pkg/api/components.go [269:317]


func getComponentDefaultContainerImage(component string, cs *ContainerService) string {
	if cs == nil || cs.Properties == nil || cs.Properties.OrchestratorProfile == nil || cs.Properties.OrchestratorProfile.KubernetesConfig == nil {
		return ""
	}
	kubernetesConfig := cs.Properties.OrchestratorProfile.KubernetesConfig
	cloudSpecConfig := cs.GetCloudSpecConfig()
	specConfig := cloudSpecConfig.KubernetesSpecConfig
	kubernetesImageBase := specConfig.MCRKubernetesImageBase
	if kubernetesConfig.KubernetesImageBase != "" {
		kubernetesImageBase = kubernetesConfig.KubernetesImageBase
	}
	k8sComponents := GetK8sComponentsByVersionMap(kubernetesConfig)[cs.Properties.OrchestratorProfile.OrchestratorVersion]
	hyperkubeImageBase := kubernetesImageBase
	hyperkubeImage := hyperkubeImageBase + k8sComponents[common.Hyperkube]
	// For Azure Stack Hub clusters, no custom hyperkubeImage with "-azs" will be used for Kubernetes 1.21+
	if cs.Properties.IsAzureStackCloud() && !common.IsKubernetesVersionGe(cs.Properties.OrchestratorProfile.OrchestratorVersion, "1.21.0") {
		hyperkubeImage = hyperkubeImage + common.AzureStackSuffix
	}
	controllerManagerBase := kubernetesImageBase
	if common.IsKubernetesVersionGe(cs.Properties.OrchestratorProfile.OrchestratorVersion, "1.16.0") {
		controllerManagerBase = kubernetesConfig.MCRKubernetesImageBase
	}

	switch component {
	case common.APIServerComponentName:
		if common.IsKubernetesVersionGe(cs.Properties.OrchestratorProfile.OrchestratorVersion, "1.17.0") {
			return kubernetesImageBase + k8sComponents[common.APIServerComponentName] + componentImageSuffix(*cs)
		}
		return hyperkubeImage
	case common.ControllerManagerComponentName:
		if common.IsKubernetesVersionGe(cs.Properties.OrchestratorProfile.OrchestratorVersion, "1.17.0") {
			return kubernetesImageBase + k8sComponents[common.ControllerManagerComponentName] + componentImageSuffix(*cs)
		}
		return hyperkubeImage
	case common.CloudControllerManagerComponentName:
		return controllerManagerBase + k8sComponents[common.CloudControllerManagerComponentName] + componentImageSuffix(*cs)
	case common.SchedulerComponentName:
		if common.IsKubernetesVersionGe(cs.Properties.OrchestratorProfile.OrchestratorVersion, "1.17.0") {
			return kubernetesImageBase + k8sComponents[common.SchedulerComponentName] + componentImageSuffix(*cs)
		}
		return hyperkubeImage
	case common.AddonManagerComponentName:
		return kubernetesImageBase + k8sComponents[common.AddonManagerComponentName]
	case common.AzureKMSProviderComponentName:
		return kubernetesImageBase + k8sComponents[common.AzureKMSProviderComponentName]
	default:
		return ""
	}
}