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
}