func NewCommand()

in kinder/cmd/kinder/create/cluster/createcluster.go [44:100]


func NewCommand() *cobra.Command {
	flags := &flagpole{}
	cmd := &cobra.Command{
		Args:  cobra.NoArgs,
		Use:   "cluster",
		Short: "Creates a local Kubernetes cluster",
		Long:  "Creates a local Kubernetes cluster using Docker container 'nodes'",
		RunE: func(cmd *cobra.Command, args []string) error {
			return runE(flags, cmd, args)
		},
	}

	cmd.Flags().StringVar(
		&flags.Name,
		"name", constants.DefaultClusterName,
		"cluster name",
	)
	cmd.Flags().IntVar(
		&flags.ControlPlanes,
		controlPlaneNodesFlagName, 1,
		"number of control-plane nodes in the cluster",
	)
	cmd.Flags().IntVar(
		&flags.Workers,
		workerNodesFlagName, 0,
		"number of worker nodes in the cluster",
	)
	cmd.Flags().StringVar(
		&flags.ImageName,
		"image", "",
		"node docker image to use for booting the cluster",
	)
	cmd.Flags().BoolVar(
		&flags.Retain,
		"retain", false,
		"retain nodes for debugging when cluster creation fails",
	)
	cmd.Flags().BoolVar(
		&flags.ExternalEtcd,
		"external-etcd", false,
		"create an external etcd container and setup kubeadm for using it",
	)
	cmd.Flags().BoolVar(
		&flags.ExternalLoadBalancer,
		"external-load-balancer", false,
		"add an external load balancer to the cluster (implicit if number of control-plane nodes>1)",
	)
	cmd.Flags().StringSliceVar(
		&flags.Volumes,
		"volume", nil,
		"mount a volume on node containers",
	)

	cmd.MarkFlagRequired("image")

	return cmd
}