Use AddKubeConfigFlag everywhere in kubeadm
Signed-off-by: Xianglin Gao <xianglin.gxl@alibaba-inc.com>
This commit is contained in:
		| @@ -21,7 +21,6 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
| 	"github.com/golang/glog" | 	"github.com/golang/glog" | ||||||
| @@ -35,11 +34,11 @@ import ( | |||||||
| 	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" | 	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" | ||||||
| 	kubeadmapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha2" | 	kubeadmapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha2" | ||||||
| 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | ||||||
|  | 	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" | ||||||
| 	phaseutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases" | 	phaseutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases" | ||||||
| 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" | 	"k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/constants" | 	"k8s.io/kubernetes/cmd/kubeadm/app/constants" | ||||||
| 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" |  | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/features" | 	"k8s.io/kubernetes/cmd/kubeadm/app/features" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/images" | 	"k8s.io/kubernetes/cmd/kubeadm/app/images" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/uploadconfig" | 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/uploadconfig" | ||||||
| @@ -62,8 +61,8 @@ var ( | |||||||
|  |  | ||||||
| // NewCmdConfig returns cobra.Command for "kubeadm config" command | // NewCmdConfig returns cobra.Command for "kubeadm config" command | ||||||
| func NewCmdConfig(out io.Writer) *cobra.Command { | func NewCmdConfig(out io.Writer) *cobra.Command { | ||||||
|  | 	kubeConfigFile := constants.GetAdminKubeConfigPath() | ||||||
|  |  | ||||||
| 	var kubeConfigFile string |  | ||||||
| 	cmd := &cobra.Command{ | 	cmd := &cobra.Command{ | ||||||
| 		Use:   "config", | 		Use:   "config", | ||||||
| 		Short: "Manage configuration for a kubeadm cluster persisted in a ConfigMap in the cluster.", | 		Short: "Manage configuration for a kubeadm cluster persisted in a ConfigMap in the cluster.", | ||||||
| @@ -81,8 +80,9 @@ func NewCmdConfig(out io.Writer) *cobra.Command { | |||||||
| 		RunE: cmdutil.SubCmdRunE("config"), | 		RunE: cmdutil.SubCmdRunE("config"), | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cmd.PersistentFlags().StringVar(&kubeConfigFile, "kubeconfig", filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName), "The KubeConfig file to use when talking to the cluster.") | 	options.AddKubeConfigFlag(cmd.PersistentFlags(), &kubeConfigFile) | ||||||
|  |  | ||||||
|  | 	kubeConfigFile = cmdutil.FindExistingKubeConfig(kubeConfigFile) | ||||||
| 	cmd.AddCommand(NewCmdConfigPrintDefault(out)) | 	cmd.AddCommand(NewCmdConfigPrintDefault(out)) | ||||||
| 	cmd.AddCommand(NewCmdConfigMigrate(out)) | 	cmd.AddCommand(NewCmdConfigMigrate(out)) | ||||||
| 	cmd.AddCommand(NewCmdConfigUpload(out, &kubeConfigFile)) | 	cmd.AddCommand(NewCmdConfigUpload(out, &kubeConfigFile)) | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ import "github.com/spf13/pflag" | |||||||
|  |  | ||||||
| // AddKubeConfigFlag adds the --kubeconfig flag to the given flagset | // AddKubeConfigFlag adds the --kubeconfig flag to the given flagset | ||||||
| func AddKubeConfigFlag(fs *pflag.FlagSet, kubeConfigFile *string) { | func AddKubeConfigFlag(fs *pflag.FlagSet, kubeConfigFile *string) { | ||||||
| 	fs.StringVar(kubeConfigFile, "kubeconfig", *kubeConfigFile, "The KubeConfig file to use when talking to the cluster") | 	fs.StringVar(kubeConfigFile, "kubeconfig", *kubeConfigFile, "The KubeConfig file to use when talking to the cluster. If the flag is not set, a set of standard locations are searched for an existing KubeConfig file.") | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddConfigFlag adds the --config flag to the given flagset | // AddConfigFlag adds the --config flag to the given flagset | ||||||
|   | |||||||
| @@ -17,7 +17,6 @@ limitations under the License. | |||||||
| package phases | package phases | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"path/filepath" |  | ||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
| 	"github.com/golang/glog" | 	"github.com/golang/glog" | ||||||
| @@ -28,6 +27,7 @@ import ( | |||||||
| 	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" | 	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" | ||||||
| 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" | 	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" | ||||||
|  | 	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" | ||||||
| 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | ||||||
| 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" | 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/features" | 	"k8s.io/kubernetes/cmd/kubeadm/app/features" | ||||||
| @@ -100,8 +100,9 @@ func getAddonsSubCommands() []*cobra.Command { | |||||||
| 	// Default values for the cobra help text | 	// Default values for the cobra help text | ||||||
| 	kubeadmscheme.Scheme.Default(cfg) | 	kubeadmscheme.Scheme.Default(cfg) | ||||||
|  |  | ||||||
| 	var cfgPath, kubeConfigFile, featureGatesString string | 	var cfgPath, featureGatesString string | ||||||
| 	var subCmds []*cobra.Command | 	var subCmds []*cobra.Command | ||||||
|  | 	kubeConfigFile := kubeadmconstants.GetAdminKubeConfigPath() | ||||||
|  |  | ||||||
| 	subCmdProperties := []struct { | 	subCmdProperties := []struct { | ||||||
| 		use      string | 		use      string | ||||||
| @@ -138,11 +139,11 @@ func getAddonsSubCommands() []*cobra.Command { | |||||||
| 			Short:   properties.short, | 			Short:   properties.short, | ||||||
| 			Long:    properties.long, | 			Long:    properties.long, | ||||||
| 			Example: properties.examples, | 			Example: properties.examples, | ||||||
| 			Run:     runAddonsCmdFunc(properties.cmdFunc, cfg, &kubeConfigFile, &cfgPath, &featureGatesString), | 			Run:     runAddonsCmdFunc(properties.cmdFunc, cfg, kubeConfigFile, &cfgPath, &featureGatesString), | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		// Add flags to the command | 		// Add flags to the command | ||||||
| 		cmd.Flags().StringVar(&kubeConfigFile, "kubeconfig", filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName), "The KubeConfig file to use when talking to the cluster") | 		options.AddKubeConfigFlag(cmd.Flags(), &kubeConfigFile) | ||||||
| 		cmd.Flags().StringVar(&cfgPath, "config", cfgPath, "Path to a kubeadm config file. WARNING: Usage of a configuration file is experimental") | 		cmd.Flags().StringVar(&cfgPath, "config", cfgPath, "Path to a kubeadm config file. WARNING: Usage of a configuration file is experimental") | ||||||
| 		cmd.Flags().StringVar(&cfg.KubernetesVersion, "kubernetes-version", cfg.KubernetesVersion, `Choose a specific Kubernetes version for the control plane`) | 		cmd.Flags().StringVar(&cfg.KubernetesVersion, "kubernetes-version", cfg.KubernetesVersion, `Choose a specific Kubernetes version for the control plane`) | ||||||
| 		cmd.Flags().StringVar(&cfg.ImageRepository, "image-repository", cfg.ImageRepository, `Choose a container registry to pull control plane images from`) | 		cmd.Flags().StringVar(&cfg.ImageRepository, "image-repository", cfg.ImageRepository, `Choose a container registry to pull control plane images from`) | ||||||
| @@ -166,7 +167,7 @@ func getAddonsSubCommands() []*cobra.Command { | |||||||
| } | } | ||||||
|  |  | ||||||
| // runAddonsCmdFunc creates a cobra.Command Run function, by composing the call to the given cmdFunc with necessary additional steps (e.g preparation of input parameters) | // runAddonsCmdFunc creates a cobra.Command Run function, by composing the call to the given cmdFunc with necessary additional steps (e.g preparation of input parameters) | ||||||
| func runAddonsCmdFunc(cmdFunc func(cfg *kubeadmapi.InitConfiguration, client clientset.Interface) error, cfg *kubeadmapiv1alpha3.InitConfiguration, kubeConfigFile *string, cfgPath *string, featureGatesString *string) func(cmd *cobra.Command, args []string) { | func runAddonsCmdFunc(cmdFunc func(cfg *kubeadmapi.InitConfiguration, client clientset.Interface) error, cfg *kubeadmapiv1alpha3.InitConfiguration, kubeConfigFile string, cfgPath *string, featureGatesString *string) func(cmd *cobra.Command, args []string) { | ||||||
|  |  | ||||||
| 	// the following statement build a clousure that wraps a call to a cmdFunc, binding | 	// the following statement build a clousure that wraps a call to a cmdFunc, binding | ||||||
| 	// the function itself with the specific parameters of each sub command. | 	// the function itself with the specific parameters of each sub command. | ||||||
| @@ -185,7 +186,8 @@ func runAddonsCmdFunc(cmdFunc func(cfg *kubeadmapi.InitConfiguration, client cli | |||||||
|  |  | ||||||
| 		internalcfg := &kubeadmapi.InitConfiguration{} | 		internalcfg := &kubeadmapi.InitConfiguration{} | ||||||
| 		kubeadmscheme.Scheme.Convert(cfg, internalcfg, nil) | 		kubeadmscheme.Scheme.Convert(cfg, internalcfg, nil) | ||||||
| 		client, err := kubeconfigutil.ClientSetFromFile(*kubeConfigFile) | 		kubeConfigFile = cmdutil.FindExistingKubeConfig(kubeConfigFile) | ||||||
|  | 		client, err := kubeconfigutil.ClientSetFromFile(kubeConfigFile) | ||||||
| 		kubeadmutil.CheckErr(err) | 		kubeadmutil.CheckErr(err) | ||||||
| 		internalcfg, err = configutil.ConfigFileAndDefaultsToInternalConfig(*cfgPath, cfg) | 		internalcfg, err = configutil.ConfigFileAndDefaultsToInternalConfig(*cfgPath, cfg) | ||||||
| 		kubeadmutil.CheckErr(err) | 		kubeadmutil.CheckErr(err) | ||||||
|   | |||||||
| @@ -18,7 +18,6 @@ package phases | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"path/filepath" |  | ||||||
|  |  | ||||||
| 	"github.com/golang/glog" | 	"github.com/golang/glog" | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
| @@ -32,7 +31,7 @@ import ( | |||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" | 	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" | 	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" | ||||||
| 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | ||||||
| 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" | 	kubeadmconstants"k8s.io/kubernetes/cmd/kubeadm/app/constants" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/bootstraptoken/clusterinfo" | 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/bootstraptoken/clusterinfo" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/bootstraptoken/node" | 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/bootstraptoken/node" | ||||||
| 	kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" | 	kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" | ||||||
| @@ -88,7 +87,8 @@ var ( | |||||||
|  |  | ||||||
| // NewCmdBootstrapToken returns the Cobra command for running the mark-master phase | // NewCmdBootstrapToken returns the Cobra command for running the mark-master phase | ||||||
| func NewCmdBootstrapToken() *cobra.Command { | func NewCmdBootstrapToken() *cobra.Command { | ||||||
| 	var kubeConfigFile string | 	kubeConfigFile := kubeadmconstants.GetAdminKubeConfigPath() | ||||||
|  |  | ||||||
| 	cmd := &cobra.Command{ | 	cmd := &cobra.Command{ | ||||||
| 		Use:     "bootstrap-token", | 		Use:     "bootstrap-token", | ||||||
| 		Short:   "Manage kubeadm-specific bootstrap token functions", | 		Short:   "Manage kubeadm-specific bootstrap token functions", | ||||||
| @@ -96,7 +96,7 @@ func NewCmdBootstrapToken() *cobra.Command { | |||||||
| 		Aliases: []string{"bootstraptoken"}, | 		Aliases: []string{"bootstraptoken"}, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cmd.PersistentFlags().StringVar(&kubeConfigFile, "kubeconfig", filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName), "The KubeConfig file to use when talking to the cluster") | 	options.AddKubeConfigFlag(cmd.PersistentFlags(), &kubeConfigFile) | ||||||
|  |  | ||||||
| 	// Add subcommands | 	// Add subcommands | ||||||
| 	cmd.AddCommand(NewSubCmdBootstrapTokenAll(&kubeConfigFile)) | 	cmd.AddCommand(NewSubCmdBootstrapTokenAll(&kubeConfigFile)) | ||||||
|   | |||||||
| @@ -17,13 +17,12 @@ limitations under the License. | |||||||
| package phases | package phases | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"path/filepath" |  | ||||||
|  |  | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
|  |  | ||||||
| 	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" | 	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" | ||||||
| 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" | 	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" | ||||||
|  | 	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" | ||||||
| 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | ||||||
| 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" | 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" | ||||||
| 	markmasterphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/markmaster" | 	markmasterphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/markmaster" | ||||||
| @@ -54,7 +53,9 @@ func NewCmdMarkMaster() *cobra.Command { | |||||||
| 	// Default values for the cobra help text | 	// Default values for the cobra help text | ||||||
| 	kubeadmscheme.Scheme.Default(cfg) | 	kubeadmscheme.Scheme.Default(cfg) | ||||||
|  |  | ||||||
| 	var cfgPath, kubeConfigFile string | 	var cfgPath string | ||||||
|  | 	kubeConfigFile := kubeadmconstants.GetAdminKubeConfigPath() | ||||||
|  |  | ||||||
| 	cmd := &cobra.Command{ | 	cmd := &cobra.Command{ | ||||||
| 		Use:     "mark-master", | 		Use:     "mark-master", | ||||||
| 		Short:   "Mark a node as master", | 		Short:   "Mark a node as master", | ||||||
| @@ -66,6 +67,7 @@ func NewCmdMarkMaster() *cobra.Command { | |||||||
| 				kubeadmutil.CheckErr(err) | 				kubeadmutil.CheckErr(err) | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | 			kubeConfigFile = cmdutil.FindExistingKubeConfig(kubeConfigFile) | ||||||
| 			client, err := kubeconfigutil.ClientSetFromFile(kubeConfigFile) | 			client, err := kubeconfigutil.ClientSetFromFile(kubeConfigFile) | ||||||
| 			kubeadmutil.CheckErr(err) | 			kubeadmutil.CheckErr(err) | ||||||
|  |  | ||||||
| @@ -83,7 +85,7 @@ func NewCmdMarkMaster() *cobra.Command { | |||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cmd.Flags().StringVar(&kubeConfigFile, "kubeconfig", filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName), "The KubeConfig file to use when talking to the cluster") | 	options.AddKubeConfigFlag(cmd.Flags(), &kubeConfigFile) | ||||||
| 	cmd.Flags().StringVar(&cfgPath, "config", cfgPath, "Path to kubeadm config file. WARNING: Usage of a configuration file is experimental") | 	cmd.Flags().StringVar(&cfgPath, "config", cfgPath, "Path to kubeadm config file. WARNING: Usage of a configuration file is experimental") | ||||||
| 	cmd.Flags().StringVar(&cfg.NodeRegistration.Name, "node-name", cfg.NodeRegistration.Name, `The node name to which label and taints should apply`) | 	cmd.Flags().StringVar(&cfg.NodeRegistration.Name, "node-name", cfg.NodeRegistration.Name, `The node name to which label and taints should apply`) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -18,7 +18,6 @@ package phases | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| @@ -27,9 +26,9 @@ import ( | |||||||
| 	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" | 	kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" | ||||||
| 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" | 	"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation" | ||||||
|  | 	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" | ||||||
| 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/constants" | 	"k8s.io/kubernetes/cmd/kubeadm/app/constants" | ||||||
| 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" |  | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/features" | 	"k8s.io/kubernetes/cmd/kubeadm/app/features" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/selfhosting" | 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/selfhosting" | ||||||
| 	kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" | 	kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" | ||||||
| @@ -76,7 +75,8 @@ func getSelfhostingSubCommand() *cobra.Command { | |||||||
| 	// Default values for the cobra help text | 	// Default values for the cobra help text | ||||||
| 	kubeadmscheme.Scheme.Default(cfg) | 	kubeadmscheme.Scheme.Default(cfg) | ||||||
|  |  | ||||||
| 	var cfgPath, kubeConfigFile, featureGatesString string | 	var cfgPath, featureGatesString string | ||||||
|  | 	kubeConfigFile := constants.GetAdminKubeConfigPath() | ||||||
|  |  | ||||||
| 	// Creates the UX Command | 	// Creates the UX Command | ||||||
| 	cmd := &cobra.Command{ | 	cmd := &cobra.Command{ | ||||||
| @@ -96,6 +96,7 @@ func getSelfhostingSubCommand() *cobra.Command { | |||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			// Gets the kubernetes client | 			// Gets the kubernetes client | ||||||
|  | 			kubeConfigFile = cmdutil.FindExistingKubeConfig(kubeConfigFile) | ||||||
| 			client, err := kubeconfigutil.ClientSetFromFile(kubeConfigFile) | 			client, err := kubeconfigutil.ClientSetFromFile(kubeConfigFile) | ||||||
| 			kubeadmutil.CheckErr(err) | 			kubeadmutil.CheckErr(err) | ||||||
|  |  | ||||||
| @@ -124,7 +125,7 @@ func getSelfhostingSubCommand() *cobra.Command { | |||||||
|  |  | ||||||
| 	// flags that are not bound to the configuration object | 	// flags that are not bound to the configuration object | ||||||
| 	// Note: All flags that are not bound to the cfg object should be whitelisted in cmd/kubeadm/app/apis/kubeadm/validation/validation.go | 	// Note: All flags that are not bound to the cfg object should be whitelisted in cmd/kubeadm/app/apis/kubeadm/validation/validation.go | ||||||
| 	cmd.Flags().StringVar(&kubeConfigFile, "kubeconfig", filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName), "The KubeConfig file to use when talking to the cluster") | 	options.AddKubeConfigFlag(cmd.Flags(), &kubeConfigFile) | ||||||
|  |  | ||||||
| 	return cmd | 	return cmd | ||||||
| } | } | ||||||
|   | |||||||
| @@ -18,12 +18,12 @@ package phases | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"path/filepath" |  | ||||||
|  |  | ||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
|  |  | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | 	kubeadmapiv1alpha3 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha3" | ||||||
|  | 	"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options" | ||||||
| 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | 	cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util" | ||||||
| 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" | 	kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" | ||||||
| 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/uploadconfig" | 	"k8s.io/kubernetes/cmd/kubeadm/app/phases/uploadconfig" | ||||||
| @@ -50,7 +50,8 @@ var ( | |||||||
| // NewCmdUploadConfig returns the Cobra command for running the uploadconfig phase | // NewCmdUploadConfig returns the Cobra command for running the uploadconfig phase | ||||||
| func NewCmdUploadConfig() *cobra.Command { | func NewCmdUploadConfig() *cobra.Command { | ||||||
| 	cfg := &kubeadmapiv1alpha3.InitConfiguration{} | 	cfg := &kubeadmapiv1alpha3.InitConfiguration{} | ||||||
| 	var cfgPath, kubeConfigFile string | 	kubeConfigFile := kubeadmconstants.GetAdminKubeConfigPath() | ||||||
|  | 	var cfgPath string | ||||||
|  |  | ||||||
| 	cmd := &cobra.Command{ | 	cmd := &cobra.Command{ | ||||||
| 		Use:     "upload-config", | 		Use:     "upload-config", | ||||||
| @@ -62,6 +63,8 @@ func NewCmdUploadConfig() *cobra.Command { | |||||||
| 			if len(cfgPath) == 0 { | 			if len(cfgPath) == 0 { | ||||||
| 				kubeadmutil.CheckErr(fmt.Errorf("the --config flag is mandatory")) | 				kubeadmutil.CheckErr(fmt.Errorf("the --config flag is mandatory")) | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | 			kubeConfigFile = cmdutil.FindExistingKubeConfig(kubeConfigFile) | ||||||
| 			client, err := kubeconfigutil.ClientSetFromFile(kubeConfigFile) | 			client, err := kubeconfigutil.ClientSetFromFile(kubeConfigFile) | ||||||
| 			kubeadmutil.CheckErr(err) | 			kubeadmutil.CheckErr(err) | ||||||
|  |  | ||||||
| @@ -78,7 +81,7 @@ func NewCmdUploadConfig() *cobra.Command { | |||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	cmd.Flags().StringVar(&kubeConfigFile, "kubeconfig", filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName), "The KubeConfig file to use when talking to the cluster") | 	options.AddKubeConfigFlag(cmd.Flags(), &kubeConfigFile) | ||||||
| 	cmd.Flags().StringVar(&cfgPath, "config", "", "Path to a kubeadm config file. WARNING: Usage of a configuration file is experimental") | 	cmd.Flags().StringVar(&cfgPath, "config", "", "Path to a kubeadm config file. WARNING: Usage of a configuration file is experimental") | ||||||
|  |  | ||||||
| 	return cmd | 	return cmd | ||||||
|   | |||||||
| @@ -20,7 +20,6 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"text/tabwriter" | 	"text/tabwriter" | ||||||
| 	"time" | 	"time" | ||||||
| @@ -52,7 +51,7 @@ import ( | |||||||
|  |  | ||||||
| // NewCmdToken returns cobra.Command for token management | // NewCmdToken returns cobra.Command for token management | ||||||
| func NewCmdToken(out io.Writer, errW io.Writer) *cobra.Command { | func NewCmdToken(out io.Writer, errW io.Writer) *cobra.Command { | ||||||
| 	var kubeConfigFile string | 	kubeConfigFile := kubeadmconstants.GetAdminKubeConfigPath() | ||||||
| 	var dryRun bool | 	var dryRun bool | ||||||
| 	tokenCmd := &cobra.Command{ | 	tokenCmd := &cobra.Command{ | ||||||
| 		Use:   "token", | 		Use:   "token", | ||||||
| @@ -84,8 +83,7 @@ func NewCmdToken(out io.Writer, errW io.Writer) *cobra.Command { | |||||||
| 		RunE: cmdutil.SubCmdRunE("token"), | 		RunE: cmdutil.SubCmdRunE("token"), | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	tokenCmd.PersistentFlags().StringVar(&kubeConfigFile, | 	options.AddKubeConfigFlag(tokenCmd.PersistentFlags(), &kubeConfigFile) | ||||||
| 		"kubeconfig", filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName), "The KubeConfig file to use when talking to the cluster. If the flag is not set a set of standard locations are searched for an existing KubeConfig file") |  | ||||||
| 	tokenCmd.PersistentFlags().BoolVar(&dryRun, | 	tokenCmd.PersistentFlags().BoolVar(&dryRun, | ||||||
| 		"dry-run", dryRun, "Whether to enable dry-run mode or not") | 		"dry-run", dryRun, "Whether to enable dry-run mode or not") | ||||||
|  |  | ||||||
|   | |||||||
| @@ -69,7 +69,7 @@ func FindExistingKubeConfig(file string) string { | |||||||
| 		return file | 		return file | ||||||
| 	} | 	} | ||||||
| 	// The user did not provide a --kubeconfig flag. Find a config in the standard | 	// The user did not provide a --kubeconfig flag. Find a config in the standard | ||||||
| 	// locations using DefaultClientConfigLoadingRules, but also consider `defaultKubeConfig`. | 	// locations using DefaultClientConfigLoadingRules, but also consider the default config path. | ||||||
| 	rules := clientcmd.NewDefaultClientConfigLoadingRules() | 	rules := clientcmd.NewDefaultClientConfigLoadingRules() | ||||||
| 	rules.Precedence = append(rules.Precedence, filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName)) | 	rules.Precedence = append(rules.Precedence, filepath.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.AdminKubeConfigFileName)) | ||||||
| 	return rules.GetDefaultFilename() | 	return rules.GetDefaultFilename() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Xianglin Gao
					Xianglin Gao