From 5851fd556bdb29be1870bd1213d2daf05d7664e6 Mon Sep 17 00:00:00 2001 From: yuexiao-wang Date: Thu, 8 Nov 2018 20:21:41 +0800 Subject: [PATCH] kubeadm: print the join command should happen after all the phases in init have finished Signed-off-by: yuexiao-wang --- cmd/kubeadm/app/cmd/init.go | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/cmd/kubeadm/app/cmd/init.go b/cmd/kubeadm/app/cmd/init.go index 43355b1b1bd..e124a114bc4 100644 --- a/cmd/kubeadm/app/cmd/init.go +++ b/cmd/kubeadm/app/cmd/init.go @@ -153,6 +153,9 @@ func NewCmdInit(out io.Writer) *cobra.Command { // via the subcommands automatically created by initRunner.BindToCommand err = runInit(&data, out) kubeadmutil.CheckErr(err) + + err = showJoinCommand(&data, out) + kubeadmutil.CheckErr(err) }, } @@ -397,6 +400,9 @@ func (d initData) KubeConfigDir() string { // KubeConfigPath returns the path to the kubeconfig file to use for connecting to Kubernetes func (d initData) KubeConfigPath() string { + if d.dryRun { + d.kubeconfigPath = filepath.Join(d.dryRunDir, kubeadmconstants.AdminKubeConfigFileName) + } return d.kubeconfigPath } @@ -458,10 +464,9 @@ func (d initData) Tokens() []string { // runInit executes master node provisioning func runInit(i *initData, out io.Writer) error { - // Get directories to write files to; can be faked if we're dry-running klog.V(1).Infof("[init] Getting certificates directory from configuration") - certsDirToWriteTo, kubeConfigDir, _, _, err := getDirectoriesToUse(i.dryRun, i.dryRunDir, i.cfg.CertificatesDir) + certsDirToWriteTo, _, _, _, err := getDirectoriesToUse(i.dryRun, i.dryRunDir, i.cfg.CertificatesDir) if err != nil { return errors.Wrap(err, "error getting directories to use") } @@ -469,8 +474,6 @@ func runInit(i *initData, out io.Writer) error { // certsDirToWriteTo is gonna equal cfg.CertificatesDir in the normal case, but gonna be a temp directory if dryrunning i.cfg.CertificatesDir = certsDirToWriteTo - adminKubeConfigPath := filepath.Join(kubeConfigDir, kubeadmconstants.AdminKubeConfigFileName) - // TODO: client and waiter are temporary until the rest of the phases that use them // are removed from this function. client, err := i.Client() @@ -526,12 +529,6 @@ func runInit(i *initData, out io.Writer) error { return nil } - // Prints the join command, multiple times in case the user has multiple tokens - for _, token := range i.Tokens() { - if err := printJoinCommand(out, adminKubeConfigPath, token, i.skipTokenPrint); err != nil { - return errors.Wrap(err, "failed to print join command") - } - } return nil } @@ -559,3 +556,17 @@ func getDirectoriesToUse(dryRun bool, dryRunDir string, defaultPkiDir string) (s return defaultPkiDir, kubeadmconstants.KubernetesDir, kubeadmconstants.GetStaticPodDirectory(), kubeadmconstants.KubeletRunDirectory, nil } + +// showJoinCommand prints the join command after all the phases in init have finished +func showJoinCommand(i *initData, out io.Writer) error { + adminKubeConfigPath := i.KubeConfigPath() + + // Prints the join command, multiple times in case the user has multiple tokens + for _, token := range i.Tokens() { + if err := printJoinCommand(out, adminKubeConfigPath, token, i.skipTokenPrint); err != nil { + return errors.Wrap(err, "failed to print join command") + } + } + + return nil +}