add server-arg and env flags

pull/7/head
iwilltry42 5 years ago
parent 4e477d3262
commit 65b5f06bfc
  1. 2
      README.md
  2. 24
      cli/commands.go
  3. 12
      main.go

@ -13,7 +13,7 @@ Thanks to @zeerorg for the original work!
## Requirements
- docker
- [docker](https://docs.docker.com/install/)
## Install

@ -30,34 +30,54 @@ func CreateCluster(c *cli.Context) error {
if c.IsSet("timeout") && !c.IsSet("wait") {
return errors.New("Cannot use --timeout flag without --wait flag")
}
port := fmt.Sprintf("%s:%s", c.String("port"), c.String("port"))
image := fmt.Sprintf("rancher/k3s:%s", c.String("version"))
cmd := "docker"
// default docker arguments
args := []string{
"run",
"--name", c.String("name"),
"-e", "K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml",
"--publish", port,
"--privileged",
"--detach",
"--env", "K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml",
}
// additional docker arguments
extraArgs := []string{}
if c.IsSet("env") || c.IsSet("e") {
for _, env := range c.StringSlice("env") {
extraArgs = append(extraArgs, "--env", env)
}
}
if c.IsSet("volume") {
extraArgs = append(extraArgs, "--volume", c.String("volume"))
}
if len(extraArgs) > 0 {
args = append(args, extraArgs...)
}
// k3s version and options
args = append(args,
"-d",
image,
"server", // cmd
"--https-listen-port", c.String("port"), //args
)
// additional k3s server arguments
if c.IsSet("server-arg") || c.IsSet("x") {
args = append(args, c.StringSlice("server-arg")...)
}
// let's go
log.Printf("Creating cluster [%s]", c.String("name"))
if err := runCommand(true, cmd, args...); err != nil {
return fmt.Errorf("ERROR: couldn't create cluster [%s]\n%+v", c.String("name"), err)
}
// wait for k3s to be up and running if we want it
start := time.Now()
timeout := time.Duration(c.Int("timeout")) * time.Second
for c.IsSet("wait") {

@ -4,7 +4,7 @@ import (
"log"
"os"
"github.com/iwilltry42/k3d/cli"
run "github.com/iwilltry42/k3d/cli"
"github.com/iwilltry42/k3d/version"
"github.com/urfave/cli"
)
@ -67,13 +67,21 @@ func main() {
Name: "wait, w",
Usage: "Wait for the cluster to come up",
},
cli.StringSliceFlag{
Name: "server-arg, x",
Usage: "Pass an additional argument to k3s server (new flag per argument)",
},
cli.StringSliceFlag{
Name: "env, e",
Usage: "Pass an additional environment variable (new flag per variable)",
},
},
Action: run.CreateCluster,
},
{
// delete deletes an existing k3s cluster (remove container and cluster directory)
Name: "delete",
Aliases: []string{"d"},
Aliases: []string{"d", "del"},
Usage: "Delete cluster",
Flags: []cli.Flag{
cli.StringFlag{

Loading…
Cancel
Save