// NewCmdInit returns "kubeadm init" command. func NewCmdInit(out io.Writer) *cobra.Command { versioned := &kubeadmapiext.MasterConfiguration{} api.Scheme.Default(versioned) cfg := kubeadmapi.MasterConfiguration{} api.Scheme.Convert(versioned, &cfg, nil) var cfgPath string var skipPreFlight bool cmd := &cobra.Command{ Use: "init", Short: "Run this in order to set up the Kubernetes master", Run: func(cmd *cobra.Command, args []string) { i, err := NewInit(cfgPath, &cfg, skipPreFlight) kubeadmutil.CheckErr(err) kubeadmutil.CheckErr(i.Validate()) kubeadmutil.CheckErr(i.Run(out)) }, } cmd.PersistentFlags().StringSliceVar( &cfg.API.AdvertiseAddresses, "api-advertise-addresses", cfg.API.AdvertiseAddresses, "The IP addresses to advertise, in case autodetection fails", ) cmd.PersistentFlags().StringSliceVar( &cfg.API.ExternalDNSNames, "api-external-dns-names", cfg.API.ExternalDNSNames, "The DNS names to advertise, in case you have configured them yourself", ) cmd.PersistentFlags().StringVar( &cfg.Networking.ServiceSubnet, "service-cidr", cfg.Networking.ServiceSubnet, "Use alternative range of IP address for service VIPs", ) cmd.PersistentFlags().StringVar( &cfg.Networking.PodSubnet, "pod-network-cidr", cfg.Networking.PodSubnet, "Specify range of IP addresses for the pod network; if set, the control plane will automatically allocate CIDRs for every node", ) cmd.PersistentFlags().StringVar( &cfg.Networking.DNSDomain, "service-dns-domain", cfg.Networking.DNSDomain, `Use alternative domain for services, e.g. "myorg.internal"`, ) cmd.PersistentFlags().Var( flags.NewCloudProviderFlag(&cfg.CloudProvider), "cloud-provider", `Enable cloud provider features (external load-balancers, storage, etc). Note that you have to configure all kubelets manually`, ) cmd.PersistentFlags().StringVar( &cfg.KubernetesVersion, "use-kubernetes-version", cfg.KubernetesVersion, `Choose a specific Kubernetes version for the control plane`, ) cmd.PersistentFlags().StringVar(&cfgPath, "config", cfgPath, "Path to kubeadm config file") // TODO (phase1+) @errordeveloper make the flags below not show up in --help but rather on --advanced-help cmd.PersistentFlags().StringSliceVar( &cfg.Etcd.Endpoints, "external-etcd-endpoints", cfg.Etcd.Endpoints, "etcd endpoints to use, in case you have an external cluster", ) cmd.PersistentFlags().MarkDeprecated("external-etcd-endpoints", "this flag will be removed when componentconfig exists") cmd.PersistentFlags().StringVar( &cfg.Etcd.CAFile, "external-etcd-cafile", cfg.Etcd.CAFile, "etcd certificate authority certificate file. Note: The path must be in /etc/ssl/certs", ) cmd.PersistentFlags().MarkDeprecated("external-etcd-cafile", "this flag will be removed when componentconfig exists") cmd.PersistentFlags().StringVar( &cfg.Etcd.CertFile, "external-etcd-certfile", cfg.Etcd.CertFile, "etcd client certificate file. Note: The path must be in /etc/ssl/certs", ) cmd.PersistentFlags().MarkDeprecated("external-etcd-certfile", "this flag will be removed when componentconfig exists") cmd.PersistentFlags().StringVar( &cfg.Etcd.KeyFile, "external-etcd-keyfile", cfg.Etcd.KeyFile, "etcd client key file. Note: The path must be in /etc/ssl/certs", ) cmd.PersistentFlags().MarkDeprecated("external-etcd-keyfile", "this flag will be removed when componentconfig exists") cmd.PersistentFlags().BoolVar( &skipPreFlight, "skip-preflight-checks", skipPreFlight, "skip preflight checks normally run before modifying the system", ) cmd.PersistentFlags().Var( discovery.NewDiscoveryValue(&cfg.Discovery), "discovery", "The discovery method kubeadm will use for connecting nodes to the master", ) return cmd }
// NewCmdInit returns "kubeadm init" command. func NewCmdInit(out io.Writer) *cobra.Command { versioned := &kubeadmapiext.MasterConfiguration{} api.Scheme.Default(versioned) cfg := kubeadmapi.MasterConfiguration{} api.Scheme.Convert(versioned, &cfg, nil) var cfgPath string var skipPreFlight bool cmd := &cobra.Command{ Use: "init", Short: "Run this in order to set up the Kubernetes master", Run: func(cmd *cobra.Command, args []string) { i, err := NewInit(cfgPath, &cfg, skipPreFlight) kubeadmutil.CheckErr(err) kubeadmutil.CheckErr(i.Validate()) kubeadmutil.CheckErr(i.Run(out)) }, } cmd.PersistentFlags().StringSliceVar( &cfg.API.AdvertiseAddresses, "api-advertise-addresses", cfg.API.AdvertiseAddresses, "The IP addresses to advertise, in case autodetection fails", ) cmd.PersistentFlags().Int32Var( &cfg.API.Port, "api-port", cfg.API.Port, "Port for API to bind to", ) cmd.PersistentFlags().StringSliceVar( &cfg.API.ExternalDNSNames, "api-external-dns-names", cfg.API.ExternalDNSNames, "The DNS names to advertise, in case you have configured them yourself", ) cmd.PersistentFlags().StringVar( &cfg.Networking.ServiceSubnet, "service-cidr", cfg.Networking.ServiceSubnet, "Use alternative range of IP address for service VIPs", ) cmd.PersistentFlags().StringVar( &cfg.Networking.PodSubnet, "pod-network-cidr", cfg.Networking.PodSubnet, "Specify range of IP addresses for the pod network; if set, the control plane will automatically allocate CIDRs for every node", ) cmd.PersistentFlags().StringVar( &cfg.Networking.DNSDomain, "service-dns-domain", cfg.Networking.DNSDomain, `Use alternative domain for services, e.g. "myorg.internal"`, ) cmd.PersistentFlags().Var( flags.NewCloudProviderFlag(&cfg.CloudProvider), "cloud-provider", `Enable cloud provider features (external load-balancers, storage, etc). Note that you have to configure all kubelets manually`, ) cmd.PersistentFlags().StringVar( &cfg.KubernetesVersion, "use-kubernetes-version", cfg.KubernetesVersion, `Choose a specific Kubernetes version for the control plane`, ) cmd.PersistentFlags().StringVar(&cfgPath, "config", cfgPath, "Path to kubeadm config file") cmd.PersistentFlags().BoolVar( &skipPreFlight, "skip-preflight-checks", skipPreFlight, "skip preflight checks normally run before modifying the system", ) cmd.PersistentFlags().Var( discovery.NewDiscoveryValue(&cfg.Discovery), "discovery", "The discovery method kubeadm will use for connecting nodes to the master", ) return cmd }