func()

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
}