Merge pull request #7 from iwilltry42/feature/server-and-env-flags
add server-arg and env flags
This commit is contained in:
commit
d94dd8cb8a
@ -13,7 +13,7 @@ Thanks to @zeerorg for the original work!
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- docker
|
- [docker](https://docs.docker.com/install/)
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
@ -30,34 +30,54 @@ func CreateCluster(c *cli.Context) error {
|
|||||||
if c.IsSet("timeout") && !c.IsSet("wait") {
|
if c.IsSet("timeout") && !c.IsSet("wait") {
|
||||||
return errors.New("Cannot use --timeout flag without --wait flag")
|
return errors.New("Cannot use --timeout flag without --wait flag")
|
||||||
}
|
}
|
||||||
|
|
||||||
port := fmt.Sprintf("%s:%s", c.String("port"), c.String("port"))
|
port := fmt.Sprintf("%s:%s", c.String("port"), c.String("port"))
|
||||||
image := fmt.Sprintf("rancher/k3s:%s", c.String("version"))
|
image := fmt.Sprintf("rancher/k3s:%s", c.String("version"))
|
||||||
cmd := "docker"
|
cmd := "docker"
|
||||||
|
|
||||||
|
// default docker arguments
|
||||||
args := []string{
|
args := []string{
|
||||||
"run",
|
"run",
|
||||||
"--name", c.String("name"),
|
"--name", c.String("name"),
|
||||||
"-e", "K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml",
|
|
||||||
"--publish", port,
|
"--publish", port,
|
||||||
"--privileged",
|
"--privileged",
|
||||||
|
"--detach",
|
||||||
|
"--env", "K3S_KUBECONFIG_OUTPUT=/output/kubeconfig.yaml",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// additional docker arguments
|
||||||
extraArgs := []string{}
|
extraArgs := []string{}
|
||||||
|
if c.IsSet("env") || c.IsSet("e") {
|
||||||
|
for _, env := range c.StringSlice("env") {
|
||||||
|
extraArgs = append(extraArgs, "--env", env)
|
||||||
|
}
|
||||||
|
}
|
||||||
if c.IsSet("volume") {
|
if c.IsSet("volume") {
|
||||||
extraArgs = append(extraArgs, "--volume", c.String("volume"))
|
extraArgs = append(extraArgs, "--volume", c.String("volume"))
|
||||||
}
|
}
|
||||||
if len(extraArgs) > 0 {
|
if len(extraArgs) > 0 {
|
||||||
args = append(args, extraArgs...)
|
args = append(args, extraArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// k3s version and options
|
||||||
args = append(args,
|
args = append(args,
|
||||||
"-d",
|
|
||||||
image,
|
image,
|
||||||
"server", // cmd
|
"server", // cmd
|
||||||
"--https-listen-port", c.String("port"), //args
|
"--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"))
|
log.Printf("Creating cluster [%s]", c.String("name"))
|
||||||
if err := runCommand(true, cmd, args...); err != nil {
|
if err := runCommand(true, cmd, args...); err != nil {
|
||||||
return fmt.Errorf("ERROR: couldn't create cluster [%s]\n%+v", c.String("name"), err)
|
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()
|
start := time.Now()
|
||||||
timeout := time.Duration(c.Int("timeout")) * time.Second
|
timeout := time.Duration(c.Int("timeout")) * time.Second
|
||||||
for c.IsSet("wait") {
|
for c.IsSet("wait") {
|
||||||
|
12
main.go
12
main.go
@ -4,7 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/iwilltry42/k3d/cli"
|
run "github.com/iwilltry42/k3d/cli"
|
||||||
"github.com/iwilltry42/k3d/version"
|
"github.com/iwilltry42/k3d/version"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
)
|
)
|
||||||
@ -67,13 +67,21 @@ func main() {
|
|||||||
Name: "wait, w",
|
Name: "wait, w",
|
||||||
Usage: "Wait for the cluster to come up",
|
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,
|
Action: run.CreateCluster,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// delete deletes an existing k3s cluster (remove container and cluster directory)
|
// delete deletes an existing k3s cluster (remove container and cluster directory)
|
||||||
Name: "delete",
|
Name: "delete",
|
||||||
Aliases: []string{"d"},
|
Aliases: []string{"d", "del"},
|
||||||
Usage: "Delete cluster",
|
Usage: "Delete cluster",
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
|
Loading…
Reference in New Issue
Block a user