diff --git a/phase/install_controllers.go b/phase/install_controllers.go index dd91b631..b5ac4299 100644 --- a/phase/install_controllers.go +++ b/phase/install_controllers.go @@ -65,10 +65,10 @@ func (p *InstallControllers) CleanUp() { func (p *InstallControllers) After() error { for i, h := range p.hosts { + h.Metadata.K0sJoinToken = "" if h.Metadata.K0sJoinTokenID == "" { continue } - h.Metadata.K0sJoinToken = "" err := p.Wet(p.leader, fmt.Sprintf("invalidate k0s join token for controller %s", h), func() error { log.Debugf("%s: invalidating join token for controller %d", p.leader, i+1) return p.leader.Exec(p.leader.Configurer.K0sCmdf("token invalidate --data-dir=%s %s", p.leader.K0sDataDir(), h.Metadata.K0sJoinTokenID), exec.Sudo(p.leader)) @@ -88,10 +88,9 @@ func (p *InstallControllers) After() error { // Run the phase func (p *InstallControllers) Run() error { - url := p.Config.Spec.InternalKubeAPIURL() - healthz := fmt.Sprintf("%s/healthz", url) - err := p.parallelDo(p.hosts, func(h *cluster.Host) error { + url := h.Metadata.K0sJoinTokenURL + healthz := fmt.Sprintf("%s/healthz", url) if p.IsWet() || !p.leader.Metadata.DryRunFakeLeader { log.Infof("%s: validating api connection to %s", h, url) ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) @@ -123,15 +122,17 @@ func (p *InstallControllers) Run() error { return err } h.Metadata.K0sJoinToken = token - tokenID, err = cluster.TokenID(token) + tokenData, err := cluster.ParseToken(token) if err != nil { return err } log.Debugf("%s: join token ID: %s", p.leader, tokenID) - h.Metadata.K0sJoinTokenID = tokenID + h.Metadata.K0sJoinTokenID = tokenData.ID + h.Metadata.K0sJoinTokenURL = tokenData.URL } else { p.DryMsgf(p.leader, "generate a k0s join token for controller %s", h) h.Metadata.K0sJoinTokenID = "dry-run" + h.Metadata.K0sJoinTokenURL = p.Config.Spec.KubeAPIURL() } log.Infof("%s: writing join token", h) diff --git a/phase/install_workers.go b/phase/install_workers.go index dc96fa5a..7730b8e3 100644 --- a/phase/install_workers.go +++ b/phase/install_workers.go @@ -74,6 +74,7 @@ func (p *InstallWorkers) After() error { return nil } for i, h := range p.hosts { + h.Metadata.K0sJoinToken = "" if h.Metadata.K0sJoinTokenID == "" { continue } @@ -84,7 +85,6 @@ func (p *InstallWorkers) After() error { if err != nil { log.Warnf("%s: failed to invalidate worker join token: %v", p.leader, err) } - h.Metadata.K0sJoinTokenID = "" _ = p.Wet(h, "overwrite k0s join token file", func() error { if err := h.Configurer.WriteFile(h, h.K0sJoinTokenPath(), "# overwritten by k0sctl after join\n", "0600"); err != nil { log.Warnf("%s: failed to overwrite the join token file at %s", h, h.K0sJoinTokenPath())