Merge pull request #30 from rancher/feature/custom-image-flag

[Feature] add --image/-i flag to specify custom k3s image/tag (start deprecation of --version flag)
pull/35/head
Thorsten Klein 5 years ago committed by GitHub
commit 0c332faf2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      cli/commands.go
  2. 11
      main.go

@ -23,6 +23,8 @@ import (
"github.com/urfave/cli"
)
const defaultRegistry = "docker.io"
// CheckTools checks if the docker API server is responding
func CheckTools(c *cli.Context) error {
log.Print("Checking docker...")
@ -43,6 +45,24 @@ func CheckTools(c *cli.Context) error {
// CreateCluster creates a new single-node cluster container and initializes the cluster directory
func CreateCluster(c *cli.Context) error {
// define image
image := c.String("image")
if c.IsSet("version") {
// TODO: --version to be deprecated
log.Println("[WARNING] The `--version` flag will be deprecated soon, please use `--image rancher/k3s:<version>` instead")
if c.IsSet("image") {
// version specified, custom image = error (to push deprecation of version flag)
log.Fatalln("[ERROR] Please use `--image <image>:<version>` instead of --image and --version")
} else {
// version specified, default image = ok (until deprecation of version flag)
image = fmt.Sprintf("%s:%s", strings.Split(image, ":")[0], c.String("version"))
}
}
if len(strings.Split(image, "/")) <= 2 {
// fallback to default registry
image = fmt.Sprintf("%s/%s", defaultRegistry, image)
}
// create cluster network
networkID, err := createClusterNetwork(c.String("name"))
if err != nil {
@ -75,7 +95,7 @@ func CreateCluster(c *cli.Context) error {
log.Printf("Creating cluster [%s]", c.String("name"))
dockerID, err := createServer(
c.GlobalBool("verbose"),
fmt.Sprintf("docker.io/rancher/k3s:%s", c.String("version")),
image,
c.String("port"),
k3sServerArgs,
env,
@ -137,7 +157,7 @@ func CreateCluster(c *cli.Context) error {
for i := 0; i < c.Int("workers"); i++ {
workerID, err := createWorker(
c.GlobalBool("verbose"),
fmt.Sprintf("docker.io/rancher/k3s:%s", c.String("version")),
image,
k3sWorkerArgs,
env,
c.String("name"),

@ -1,6 +1,7 @@
package main
import (
"fmt"
"log"
"os"
@ -9,6 +10,9 @@ import (
"github.com/urfave/cli"
)
// defaultK3sImage specifies the default image being used for server and workers
const defaultK3sImage = "docker.io/rancher/k3s"
// main represents the CLI application
func main() {
@ -56,8 +60,8 @@ func main() {
Usage: "Mount one or more volumes into every node of the cluster (Docker notation: `source:destination[,source:destination]`)",
},
cli.StringFlag{
// TODO: to be deprecated
Name: "version",
Value: version.GetK3sVersion(),
Usage: "Choose the k3s image version",
},
cli.IntFlag{
@ -74,6 +78,11 @@ func main() {
Name: "wait, w",
Usage: "Wait for the cluster to come up before returning",
},
cli.StringFlag{
Name: "image, i",
Usage: "Specify a k3s image (Format: <repo>/<image>:<tag>)",
Value: fmt.Sprintf("%s:%s", defaultK3sImage, version.GetK3sVersion()),
},
cli.StringSliceFlag{
Name: "server-arg, x",
Usage: "Pass an additional argument to k3s server (new flag per argument)",

Loading…
Cancel
Save