in internal/kubelet/config.go [447:492]
func (k *kubelet) writeKubeletConfigToDir() error {
kubeletConfig, err := k.GenerateKubeletConfig()
if err != nil {
return err
}
kubeletConfigBytes, err := json.MarshalIndent(kubeletConfig, "", strings.Repeat(" ", 4))
if err != nil {
return err
}
configPath := path.Join(kubeletConfigRoot, kubeletConfigFile)
k.flags["config"] = configPath
zap.L().Info("Writing kubelet config to file..", zap.String("path", configPath))
if err := util.WriteFileWithDir(configPath, kubeletConfigBytes, kubeletConfigPerm); err != nil {
return err
}
if len(k.nodeConfig.Spec.Kubelet.Config) > 0 {
dirPath := path.Join(kubeletConfigRoot, kubeletConfigDir)
k.flags["config-dir"] = dirPath
zap.L().Info("Enabling kubelet config drop-in dir..")
k.setEnv("KUBELET_CONFIG_DROPIN_DIR_ALPHA", "on")
filePath := path.Join(dirPath, "00-nodeadm.conf")
// merge in default type metadata like kind and apiVersion in case the
// user has not specified this, as it is required to qualify a drop-in
// config as a valid KubeletConfiguration
userKubeletConfigMap, err := util.DocumentMerge(defaultKubeletSubConfig().TypeMeta, k.nodeConfig.Spec.Kubelet.Config)
if err != nil {
return err
}
zap.L().Info("Writing user kubelet config to drop-in file..", zap.String("path", filePath))
userKubeletConfigBytes, err := json.MarshalIndent(userKubeletConfigMap, "", strings.Repeat(" ", 4))
if err != nil {
return err
}
if err := util.WriteFileWithDir(filePath, userKubeletConfigBytes, kubeletConfigPerm); err != nil {
return err
}
}
return nil
}