// BuildSerializeableNodeConfig takes the NodeArgs (partially complete config) and uses them along with defaulting behavior to create the fully specified // config object for starting the node // TODO: reconcile that this is not used by CreateNodeConfig in all-in-one start. func (args NodeArgs) BuildSerializeableNodeConfig() (*configapi.NodeConfig, error) { var dnsIP string if len(args.ClusterDNS) > 0 { dnsIP = args.ClusterDNS.String() } config := &configapi.NodeConfig{ NodeName: args.NodeName, ServingInfo: configapi.ServingInfo{ BindAddress: net.JoinHostPort(args.ListenArg.ListenAddr.Host, strconv.Itoa(ports.KubeletPort)), }, ImageConfig: configapi.ImageConfig{ Format: args.ImageFormatArgs.ImageTemplate.Format, Latest: args.ImageFormatArgs.ImageTemplate.Latest, }, NetworkConfig: configapi.NodeNetworkConfig{ NetworkPluginName: args.NetworkPluginName, }, VolumeDirectory: args.VolumeDir, AllowDisabledDocker: args.AllowDisabledDocker, DNSDomain: args.ClusterDomain, DNSIP: dnsIP, MasterKubeConfig: admin.DefaultNodeKubeConfigFile(args.ConfigDir.Value()), PodManifestConfig: nil, EnableUnidling: true, } if args.ListenArg.UseTLS() { config.ServingInfo.ServerCert = admin.DefaultNodeServingCertInfo(args.ConfigDir.Value()) config.ServingInfo.ClientCA = admin.DefaultKubeletClientCAFile(args.MasterCertDir) } internal, err := applyDefaults(config, configapiv1.SchemeGroupVersion) if err != nil { return nil, err } config = internal.(*configapi.NodeConfig) // When creating a new config, use Protobuf configapi.SetProtobufClientDefaults(config.MasterClientConnectionOverrides) return config, nil }
// BuildSerializeableNodeConfig takes the NodeArgs (partially complete config) and uses them along with defaulting behavior to create the fully specified // config object for starting the node func (args NodeArgs) BuildSerializeableNodeConfig() (*configapi.NodeConfig, error) { var dnsIP string if len(args.ClusterDNS) > 0 { dnsIP = args.ClusterDNS.String() } config := &configapi.NodeConfig{ NodeName: args.NodeName, ServingInfo: configapi.ServingInfo{ BindAddress: net.JoinHostPort(args.ListenArg.ListenAddr.Host, strconv.Itoa(ports.KubeletPort)), }, ImageConfig: configapi.ImageConfig{ Format: args.ImageFormatArgs.ImageTemplate.Format, Latest: args.ImageFormatArgs.ImageTemplate.Latest, }, NetworkPluginName: args.NetworkPluginName, VolumeDirectory: args.VolumeDir, AllowDisabledDocker: args.AllowDisabledDocker, DNSDomain: args.ClusterDomain, DNSIP: dnsIP, MasterKubeConfig: admin.DefaultNodeKubeConfigFile(args.ConfigDir.Value()), PodManifestConfig: nil, } if args.ListenArg.UseTLS() { config.ServingInfo.ServerCert = admin.DefaultNodeServingCertInfo(args.ConfigDir.Value()) config.ServingInfo.ClientCA = admin.DefaultKubeletClientCAFile(args.MasterCertDir) } // Roundtrip the config to v1 and back to ensure proper defaults are set. ext, err := configapi.Scheme.ConvertToVersion(config, "v1") if err != nil { return nil, err } internal, err := configapi.Scheme.ConvertToVersion(ext, "") if err != nil { return nil, err } return internal.(*configapi.NodeConfig), nil }