in pkg/cloudprovider/aws/launchtemplate.go [246:289]
func (p *LaunchTemplateProvider) getUserData(ctx context.Context, constraints *v1alpha1.Constraints, instanceTypes []cloudprovider.InstanceType, additionalLabels map[string]string) (string, error) {
var containerRuntimeArg string
if !needsDocker(instanceTypes) {
containerRuntimeArg = "--container-runtime containerd"
}
var userData bytes.Buffer
userData.WriteString(fmt.Sprintf(`#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
/etc/eks/bootstrap.sh '%s' %s \
--apiserver-endpoint '%s'`,
injection.GetOptions(ctx).ClusterName,
containerRuntimeArg,
injection.GetOptions(ctx).ClusterEndpoint))
caBundle, err := p.GetCABundle(ctx)
if err != nil {
return "", fmt.Errorf("getting ca bundle for user data, %w", err)
}
if caBundle != nil {
userData.WriteString(fmt.Sprintf(` \
--b64-cluster-ca '%s'`,
*caBundle))
}
nodeLabelArgs := p.getNodeLabelArgs(functional.UnionStringMaps(additionalLabels, constraints.Labels))
nodeTaintsArgs := p.getNodeTaintArgs(constraints)
kubeletExtraArgs := strings.Trim(strings.Join([]string{nodeLabelArgs, nodeTaintsArgs.String()}, " "), " ")
if !injection.GetOptions(ctx).AWSENILimitedPodDensity {
userData.WriteString(` \
--use-max-pods=false`)
kubeletExtraArgs += " --max-pods=110"
}
if len(kubeletExtraArgs) > 0 {
userData.WriteString(fmt.Sprintf(` \
--kubelet-extra-args '%s'`, kubeletExtraArgs))
}
if len(constraints.KubeletConfiguration.ClusterDNS) > 0 {
userData.WriteString(fmt.Sprintf(` \
--dns-cluster-ip '%s'`, constraints.KubeletConfiguration.ClusterDNS[0]))
}
return base64.StdEncoding.EncodeToString(userData.Bytes()), nil
}