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 ""
}
}