package cmds import ( "os" "path/filepath" "github.com/urfave/cli" ) type Agent struct { Token string TokenFile string ServerURL string ResolvConf string DataDir string NodeIP string NodeName string ClusterSecret string Docker bool ContainerRuntimeEndpoint string NoFlannel bool Debug bool AgentShared ExtraKubeletArgs cli.StringSlice ExtraKubeProxyArgs cli.StringSlice } type AgentShared struct { NodeIP string } var ( appName = filepath.Base(os.Args[0]) AgentConfig Agent NodeIPFlag = cli.StringFlag{ Name: "node-ip,i", Usage: "(agent) IP address to advertise for node", Destination: &AgentConfig.NodeIP, } NodeNameFlag = cli.StringFlag{ Name: "node-name", Usage: "(agent) Node name", EnvVar: "K3S_NODE_NAME", Destination: &AgentConfig.NodeName, } DockerFlag = cli.BoolFlag{ Name: "docker", Usage: "(agent) Use docker instead of containerd", Destination: &AgentConfig.Docker, } FlannelFlag = cli.BoolFlag{ Name: "no-flannel", Usage: "(agent) Disable embedded flannel", Destination: &AgentConfig.NoFlannel, } CRIEndpointFlag = cli.StringFlag{ Name: "container-runtime-endpoint", Usage: "(agent) Disable embedded containerd and use alternative CRI implementation", Destination: &AgentConfig.ContainerRuntimeEndpoint, } ResolvConfFlag = cli.StringFlag{ Name: "resolv-conf", Usage: "Kubelet resolv.conf file", EnvVar: "K3S_RESOLV_CONF", Destination: &AgentConfig.ResolvConf, } ExtraKubeletArgs = cli.StringSliceFlag{ Name: "kubelet-arg", Usage: "(agent) Customized flag for kubelet process", Value: &AgentConfig.ExtraKubeletArgs, } ExtraKubeProxyArgs = cli.StringSliceFlag{ Name: "kube-proxy-arg", Usage: "(agent) Customized flag for kube-proxy process", Value: &AgentConfig.ExtraKubeProxyArgs, } ) func NewAgentCommand(action func(ctx *cli.Context) error) cli.Command { return cli.Command{ Name: "agent", Usage: "Run node agent", UsageText: appName + " agent [OPTIONS]", Action: action, Flags: []cli.Flag{ cli.StringFlag{ Name: "token,t", Usage: "Token to use for authentication", EnvVar: "K3S_TOKEN", Destination: &AgentConfig.Token, }, cli.StringFlag{ Name: "token-file", Usage: "Token file to use for authentication", EnvVar: "K3S_TOKEN_FILE", Destination: &AgentConfig.TokenFile, }, cli.StringFlag{ Name: "server,s", Usage: "Server to connect to", EnvVar: "K3S_URL", Destination: &AgentConfig.ServerURL, }, cli.StringFlag{ Name: "data-dir,d", Usage: "Folder to hold state", Destination: &AgentConfig.DataDir, Value: "/var/lib/rancher/k3s", }, cli.StringFlag{ Name: "cluster-secret", Usage: "Shared secret used to bootstrap a cluster", Destination: &AgentConfig.ClusterSecret, EnvVar: "K3S_CLUSTER_SECRET", }, DockerFlag, FlannelFlag, NodeNameFlag, NodeIPFlag, CRIEndpointFlag, ResolvConfFlag, ExtraKubeletArgs, ExtraKubeProxyArgs, }, } }