func()

in pkg/providers/imagefamily/bootstrap/aksbootstrap.go [277:353]


func (a AKS) applyOptions(nbv *NodeBootstrapVariables) {
	nbv.KubeCACrt = *a.CABundle
	nbv.APIServerName = a.APIServerName
	nbv.TLSBootstrapToken = a.KubeletClientTLSBootstrapToken

	nbv.TenantID = a.TenantID
	nbv.SubscriptionID = a.SubscriptionID
	nbv.Location = a.Location
	nbv.ResourceGroup = a.ResourceGroup
	nbv.UserAssignedIdentityID = a.KubeletIdentityClientID

	nbv.NetworkPlugin = a.NetworkPlugin

	nbv.NetworkPolicy = a.NetworkPolicy
	nbv.KubernetesVersion = a.KubernetesVersion

	nbv.KubeBinaryURL = kubeBinaryURL(a.KubernetesVersion, a.Arch)
	nbv.VNETCNILinuxPluginsURL = fmt.Sprintf("%s/azure-cni/v1.4.32/binaries/azure-vnet-cni-linux-%s-v1.4.32.tgz", globalAKSMirror, a.Arch)
	nbv.CNIPluginsURL = fmt.Sprintf("%s/cni-plugins/v1.1.1/binaries/cni-plugins-linux-%s-v1.1.1.tgz", globalAKSMirror, a.Arch)
	// calculated values
	nbv.NetworkSecurityGroup = fmt.Sprintf("aks-agentpool-%s-nsg", a.ClusterID)
	nbv.RouteTable = fmt.Sprintf("aks-agentpool-%s-routetable", a.ClusterID)

	if a.GPUNode {
		nbv.GPUNode = true
		nbv.ConfigGPUDriverIfNeeded = true
		nbv.GPUDriverVersion = a.GPUDriverVersion
		nbv.GPUDriverType = a.GPUDriverType
		nbv.GPUImageSHA = a.GPUImageSHA
	}

	// merge and stringify labels
	kubeletLabels := lo.Assign(getBaseKubeletNodeLabels(), a.Labels)
	getAgentbakerGeneratedLabels(a.ResourceGroup, kubeletLabels)

	subnetParts, _ := utils.GetVnetSubnetIDComponents(a.SubnetID)
	nbv.Subnet = subnetParts.SubnetName
	nbv.VirtualNetworkResourceGroup = subnetParts.ResourceGroupName
	nbv.VirtualNetwork = subnetParts.VNetName

	nbv.KubeletNodeLabels = strings.Join(lo.MapToSlice(kubeletLabels, func(k, v string) string {
		return fmt.Sprintf("%s=%s", k, v)
	}), ",")

	// Assign Per K8s version kubelet flags
	minorVersion := semver.MustParse(a.KubernetesVersion).Minor
	kubeletFlagsBase := getBaseKubeletFlags()
	if minorVersion < 31 {
		kubeletFlagsBase["--keep-terminated-pod-volumes"] = "false"
	}

	credentialProviderURL := CredentialProviderURL(a.KubernetesVersion, a.Arch)
	if credentialProviderURL != "" { // use OOT credential provider
		nbv.CredentialProviderDownloadURL = credentialProviderURL
		kubeletFlagsBase["--image-credential-provider-config"] = "/var/lib/kubelet/credential-provider-config.yaml"
		kubeletFlagsBase["--image-credential-provider-bin-dir"] = "/var/lib/kubelet/credential-provider"
	} else { // Versions Less than 1.30
		// we can make this logic smarter later when we have more than one
		// for now just adding here.
		kubeletFlagsBase["--feature-gates"] = "DisableKubeletCloudCredentialProviders=false"
		kubeletFlagsBase["--azure-container-registry-config"] = "/etc/kubernetes/azure.json"
	}
	// merge and stringify taints
	kubeletFlags := lo.Assign(kubeletFlagsBase)
	if len(a.Taints) > 0 {
		taintStrs := lo.Map(a.Taints, func(taint v1.Taint, _ int) string { return taint.ToString() })
		kubeletFlags = lo.Assign(kubeletFlags, map[string]string{"--register-with-taints": strings.Join(taintStrs, ",")})
	}

	nodeclaimKubeletConfig := KubeletConfigToMap(a.KubeletConfig)
	kubeletFlags = lo.Assign(kubeletFlags, nodeclaimKubeletConfig)

	// striginify kubelet flags (including taints)
	nbv.KubeletFlags = strings.Join(lo.MapToSlice(kubeletFlags, func(k, v string) string {
		return fmt.Sprintf("%s=%s", k, v)
	}), " ")
}