// RunCreateToken generates a new bootstrap token and stores it as a secret on the server. func RunCreateToken(out io.Writer, cmd *cobra.Command, tokenDuration time.Duration, token string) error { client, err := kubemaster.CreateClientFromFile(path.Join(kubeadmapi.GlobalEnvParams.KubernetesDir, "admin.conf")) if err != nil { return err } d := &kubeadmapi.TokenDiscovery{} if token != "" { parsedID, parsedSecret, err := kubeadmutil.ParseToken(token) if err != nil { return err } d.ID = parsedID d.Secret = parsedSecret } err = kubeadmutil.GenerateTokenIfNeeded(d) if err != nil { return err } err = kubeadmutil.UpdateOrCreateToken(client, d, tokenDuration) if err != nil { return err } fmt.Fprintln(out, kubeadmutil.BearerToken(d)) return nil }
func PrepareTokenDiscovery(d *kubeadmapi.TokenDiscovery) error { if len(d.Addresses) == 0 { ip, err := netutil.ChooseHostInterface() if err != nil { return err } d.Addresses = []string{ip.String() + ":" + strconv.Itoa(kubeadmapiext.DefaultDiscoveryBindPort)} } if err := kubeadmutil.GenerateTokenIfNeeded(d); err != nil { return fmt.Errorf("failed to generate token(s) [%v]", err) } return nil }