mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #53702 from wackxu/esem
Automatic merge from submit-queue (batch tested with PRs 51840, 53542, 53857, 53831, 53702). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. refactor NewCmdJoin function **What this PR does / why we need it**: refactor NewCmdJoin function to make the code more readable and concision 1、split the function into several small function 2、extract the big variable from the function **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes # **Release note**: ```release-note NONE ```
This commit is contained in:
commit
fc51518e3e
@ -24,6 +24,7 @@ import (
|
|||||||
|
|
||||||
"github.com/renstrom/dedent"
|
"github.com/renstrom/dedent"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
flag "github.com/spf13/pflag"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
certutil "k8s.io/client-go/util/cert"
|
certutil "k8s.io/client-go/util/cert"
|
||||||
@ -49,20 +50,8 @@ var (
|
|||||||
|
|
||||||
Run 'kubectl get nodes' on the master to see this machine join.
|
Run 'kubectl get nodes' on the master to see this machine join.
|
||||||
`)
|
`)
|
||||||
)
|
|
||||||
|
|
||||||
// NewCmdJoin returns "kubeadm join" command.
|
joinLongDescription = dedent.Dedent(`
|
||||||
func NewCmdJoin(out io.Writer) *cobra.Command {
|
|
||||||
cfg := &kubeadmapiext.NodeConfiguration{}
|
|
||||||
api.Scheme.Default(cfg)
|
|
||||||
|
|
||||||
var skipPreFlight bool
|
|
||||||
var cfgPath string
|
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
|
||||||
Use: "join <flags> [DiscoveryTokenAPIServers]",
|
|
||||||
Short: "Run this on any machine you wish to join an existing cluster",
|
|
||||||
Long: dedent.Dedent(`
|
|
||||||
When joining a kubeadm initialized cluster, we need to establish
|
When joining a kubeadm initialized cluster, we need to establish
|
||||||
bidirectional trust. This is split into discovery (having the Node
|
bidirectional trust. This is split into discovery (having the Node
|
||||||
trust the Kubernetes Master) and TLS bootstrap (having the Kubernetes
|
trust the Kubernetes Master) and TLS bootstrap (having the Kubernetes
|
||||||
@ -102,7 +91,21 @@ func NewCmdJoin(out io.Writer) *cobra.Command {
|
|||||||
|
|
||||||
Often times the same token is used for both parts. In this case, the
|
Often times the same token is used for both parts. In this case, the
|
||||||
--token flag can be used instead of specifying each token individually.
|
--token flag can be used instead of specifying each token individually.
|
||||||
`),
|
`)
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewCmdJoin returns "kubeadm join" command.
|
||||||
|
func NewCmdJoin(out io.Writer) *cobra.Command {
|
||||||
|
cfg := &kubeadmapiext.NodeConfiguration{}
|
||||||
|
api.Scheme.Default(cfg)
|
||||||
|
|
||||||
|
var skipPreFlight bool
|
||||||
|
var cfgPath string
|
||||||
|
|
||||||
|
cmd := &cobra.Command{
|
||||||
|
Use: "join [flags]",
|
||||||
|
Short: "Run this on any machine you wish to join an existing cluster",
|
||||||
|
Long: joinLongDescription,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
cfg.DiscoveryTokenAPIServers = args
|
cfg.DiscoveryTokenAPIServers = args
|
||||||
|
|
||||||
@ -117,41 +120,49 @@ func NewCmdJoin(out io.Writer) *cobra.Command {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.PersistentFlags().StringVar(
|
AddJoinConfigFlags(cmd.PersistentFlags(), cfg)
|
||||||
&cfgPath, "config", cfgPath,
|
AddJoinOtherFlags(cmd.PersistentFlags(), &cfgPath, &skipPreFlight)
|
||||||
"Path to kubeadm config file.")
|
|
||||||
|
|
||||||
cmd.PersistentFlags().StringVar(
|
|
||||||
&cfg.DiscoveryFile, "discovery-file", "",
|
|
||||||
"A file or url from which to load cluster information.")
|
|
||||||
cmd.PersistentFlags().StringVar(
|
|
||||||
&cfg.DiscoveryToken, "discovery-token", "",
|
|
||||||
"A token used to validate cluster information fetched from the master.")
|
|
||||||
cmd.PersistentFlags().StringVar(
|
|
||||||
&cfg.NodeName, "node-name", "",
|
|
||||||
"Specify the node name.")
|
|
||||||
cmd.PersistentFlags().StringVar(
|
|
||||||
&cfg.TLSBootstrapToken, "tls-bootstrap-token", "",
|
|
||||||
"A token used for TLS bootstrapping.")
|
|
||||||
cmd.PersistentFlags().StringSliceVar(
|
|
||||||
&cfg.DiscoveryTokenCACertHashes, "discovery-token-ca-cert-hash", []string{},
|
|
||||||
"For token-based discovery, validate that the root CA public key matches this hash (format: \"<type>:<value>\").")
|
|
||||||
cmd.PersistentFlags().BoolVar(
|
|
||||||
&cfg.DiscoveryTokenUnsafeSkipCAVerification, "discovery-token-unsafe-skip-ca-verification", false,
|
|
||||||
"For token-based discovery, allow joining without --discovery-token-ca-cert-hash pinning.")
|
|
||||||
|
|
||||||
cmd.PersistentFlags().StringVar(
|
|
||||||
&cfg.Token, "token", "",
|
|
||||||
"Use this token for both discovery-token and tls-bootstrap-token.")
|
|
||||||
|
|
||||||
cmd.PersistentFlags().BoolVar(
|
|
||||||
&skipPreFlight, "skip-preflight-checks", false,
|
|
||||||
"Skip preflight checks normally run before modifying the system.",
|
|
||||||
)
|
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddJoinConfigFlags adds join flags bound to the config to the specified flagset
|
||||||
|
func AddJoinConfigFlags(flagSet *flag.FlagSet, cfg *kubeadmapiext.NodeConfiguration) {
|
||||||
|
flagSet.StringVar(
|
||||||
|
&cfg.DiscoveryFile, "discovery-file", "",
|
||||||
|
"A file or url from which to load cluster information.")
|
||||||
|
flagSet.StringVar(
|
||||||
|
&cfg.DiscoveryToken, "discovery-token", "",
|
||||||
|
"A token used to validate cluster information fetched from the master.")
|
||||||
|
flagSet.StringVar(
|
||||||
|
&cfg.NodeName, "node-name", "",
|
||||||
|
"Specify the node name.")
|
||||||
|
flagSet.StringVar(
|
||||||
|
&cfg.TLSBootstrapToken, "tls-bootstrap-token", "",
|
||||||
|
"A token used for TLS bootstrapping.")
|
||||||
|
flagSet.StringSliceVar(
|
||||||
|
&cfg.DiscoveryTokenCACertHashes, "discovery-token-ca-cert-hash", []string{},
|
||||||
|
"For token-based discovery, validate that the root CA public key matches this hash (format: \"<type>:<value>\").")
|
||||||
|
flagSet.BoolVar(
|
||||||
|
&cfg.DiscoveryTokenUnsafeSkipCAVerification, "discovery-token-unsafe-skip-ca-verification", false,
|
||||||
|
"For token-based discovery, allow joining without --discovery-token-ca-cert-hash pinning.")
|
||||||
|
flagSet.StringVar(
|
||||||
|
&cfg.Token, "token", "",
|
||||||
|
"Use this token for both discovery-token and tls-bootstrap-token.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddJoinOtherFlags adds join flags that are not bound to a configuration file to the given flagset
|
||||||
|
func AddJoinOtherFlags(flagSet *flag.FlagSet, cfgPath *string, skipPreFlight *bool) {
|
||||||
|
flagSet.StringVar(
|
||||||
|
cfgPath, "config", *cfgPath,
|
||||||
|
"Path to kubeadm config file.")
|
||||||
|
|
||||||
|
flagSet.BoolVar(
|
||||||
|
skipPreFlight, "skip-preflight-checks", false,
|
||||||
|
"Skip preflight checks normally run before modifying the system.",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// Join defines struct used by kubeadm join command
|
// Join defines struct used by kubeadm join command
|
||||||
type Join struct {
|
type Join struct {
|
||||||
cfg *kubeadmapi.NodeConfiguration
|
cfg *kubeadmapi.NodeConfiguration
|
||||||
|
Loading…
Reference in New Issue
Block a user