func()

in pkg/providers/amifamily/bootstrap/nodeadm.go [60:104]


func (n Nodeadm) getNodeConfigYAML() (string, error) {
	config := &admv1alpha1.NodeConfig{
		TypeMeta: metav1.TypeMeta{
			Kind:       admapi.KindNodeConfig,
			APIVersion: admv1alpha1.GroupVersion.String(),
		},
		Spec: admv1alpha1.NodeConfigSpec{
			Cluster: admv1alpha1.ClusterDetails{
				Name:              n.ClusterName,
				APIServerEndpoint: n.ClusterEndpoint,
				CIDR:              lo.FromPtr(n.ClusterCIDR),
			},
		},
	}
	if lo.FromPtr(n.CABundle) != "" {
		ca, err := base64.StdEncoding.DecodeString(*n.CABundle)
		if err != nil {
			return "", fmt.Errorf("decoding CABundle, %w", err)
		}
		config.Spec.Cluster.CertificateAuthority = ca
	}
	if cidr := lo.FromPtr(n.ClusterCIDR); cidr != "" {
		config.Spec.Cluster.CIDR = cidr
	} else {
		return "", cloudprovider.NewNodeClassNotReadyError(fmt.Errorf("resolving cluster CIDR"))
	}
	if lo.FromPtr(n.InstanceStorePolicy) == v1.InstanceStorePolicyRAID0 {
		config.Spec.Instance.LocalStorage.Strategy = admv1alpha1.LocalStorageRAID0
	}
	inlineConfig, err := n.generateInlineKubeletConfiguration()
	if err != nil {
		return "", err
	}
	config.Spec.Kubelet.Config = inlineConfig
	if arg := n.nodeLabelArg(); arg != "" {
		config.Spec.Kubelet.Flags = []string{arg}
	}

	// Convert to YAML at the end for improved legibility.
	configYAML, err := yaml.Marshal(config)
	if err != nil {
		return "", err
	}
	return fmt.Sprintf("# Karpenter Generated NodeConfig\n%s", string(configYAML)), nil
}