Skip to content

Commit 90f721b

Browse files
authored
adds flags for installing knative a la carte (#279)
Signed-off-by: Paul S. Schweigert <[email protected]> Adds command line flags `--install-serving` and `install-eventing` to enable users to install only one Knative component (i.e. only serving). Using both flags will install both components (which is also the default behavior when no flag is passed).
1 parent 5d5a8c2 commit 90f721b

File tree

5 files changed

+65
-24
lines changed

5 files changed

+65
-24
lines changed

internal/command/flags.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222

2323
var name string
2424
var kubernetesVersion string
25+
var installServing bool
26+
var installEventing bool
2527

2628
func clusterNameOption(targetCmd *cobra.Command, flagDefault string) {
2729
targetCmd.Flags().StringVarP(
@@ -41,3 +43,11 @@ func kubernetesVersionOption(targetCmd *cobra.Command, flagDefault string, usage
4143
flagDefault,
4244
usageText)
4345
}
46+
47+
func installServingOption(targetCmd *cobra.Command) {
48+
targetCmd.Flags().BoolVar(&installServing, "install-serving", false, "install Serving on quickstart cluster")
49+
}
50+
51+
func installEventingOption(targetCmd *cobra.Command) {
52+
targetCmd.Flags().BoolVar(&installEventing, "install-eventing", false, "install Eventing on quickstart cluster")
53+
}

internal/command/kind.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ func NewKindCommand() *cobra.Command {
2828
Short: "Quickstart with Kind",
2929
RunE: func(cmd *cobra.Command, args []string) error {
3030
fmt.Println("Running Knative Quickstart using Kind")
31-
return kind.SetUp(name, kubernetesVersion)
31+
return kind.SetUp(name, kubernetesVersion, installServing, installEventing)
3232
},
3333
}
3434
// Set kindCmd options
3535
clusterNameOption(kindCmd, "knative")
3636
kubernetesVersionOption(kindCmd, "", "kubernetes version to use (1.x.y) or (kindest/node:v1.x.y)")
37+
installServingOption(kindCmd)
38+
installEventingOption(kindCmd)
3739

3840
return kindCmd
3941
}

internal/command/minikube.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,13 @@ func NewMinikubeCommand() *cobra.Command {
3030
Short: "Quickstart with Minikube",
3131
RunE: func(cmd *cobra.Command, args []string) error {
3232
fmt.Println("Running Knative Quickstart using Minikube")
33-
return minikube.SetUp(name, kubernetesVersion)
33+
return minikube.SetUp(name, kubernetesVersion, installServing, installEventing)
3434
},
3535
}
3636
// Set minikubeCmd options
3737
clusterNameOption(minikubeCmd, "knative")
3838
kubernetesVersionOption(minikubeCmd, "", "kubernetes version to use (1.x.y)")
39+
installServingOption(minikubeCmd)
40+
installEventingOption(minikubeCmd)
3941
return minikubeCmd
4042
}

pkg/kind/kind.go

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,16 @@ var clusterName string
3131
var kindVersion = 0.11
3232

3333
// SetUp creates a local Kind cluster and installs all the relevant Knative components
34-
func SetUp(name, kVersion string) error {
34+
func SetUp(name, kVersion string, installServing, installEventing bool) error {
3535
start := time.Now()
3636

37+
// if neither the "install-serving" or "install-eventing" flags are set,
38+
// then we assume the user wants to install both serving and eventing
39+
if !installServing && !installEventing {
40+
installServing = true
41+
installEventing = true
42+
}
43+
3744
// kubectl is required, fail if not found
3845
if _, err := exec.LookPath("kubectl"); err != nil {
3946
fmt.Println("ERROR: kubectl is required for quickstart")
@@ -53,18 +60,25 @@ func SetUp(name, kVersion string) error {
5360
if err := createKindCluster(); err != nil {
5461
return fmt.Errorf("creating cluster: %w", err)
5562
}
56-
if err := install.Serving(); err != nil {
57-
return fmt.Errorf("install serving: %w", err)
58-
}
59-
if err := install.Kourier(); err != nil {
60-
return fmt.Errorf("install kourier: %w", err)
61-
}
62-
if err := install.KourierKind(); err != nil {
63-
return fmt.Errorf("configure kourier: %w", err)
63+
64+
if installServing {
65+
if err := install.Serving(); err != nil {
66+
return fmt.Errorf("install serving: %w", err)
67+
}
68+
if err := install.Kourier(); err != nil {
69+
return fmt.Errorf("install kourier: %w", err)
70+
}
71+
if err := install.KourierKind(); err != nil {
72+
return fmt.Errorf("configure kourier: %w", err)
73+
}
6474
}
65-
if err := install.Eventing(); err != nil {
66-
return fmt.Errorf("install eventing: %w", err)
75+
76+
if installEventing {
77+
if err := install.Eventing(); err != nil {
78+
return fmt.Errorf("install eventing: %w", err)
79+
}
6780
}
81+
6882
finish := time.Since(start).Round(time.Second)
6983
fmt.Printf("🚀 Knative install took: %s \n", finish)
7084
fmt.Println("🎉 Now have some fun with Serverless and Event Driven Apps!")

pkg/minikube/minikube.go

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,16 @@ var cpus = "3"
3535
var memory = "3072"
3636

3737
// SetUp creates a local Minikube cluster and installs all the relevant Knative components
38-
func SetUp(name, kVersion string) error {
38+
func SetUp(name, kVersion string, installServing, installEventing bool) error {
3939
start := time.Now()
4040

41+
// if neither the "install-serving" or "install-eventing" flags are set,
42+
// then we assume the user wants to install both serving and eventing
43+
if !installServing && !installEventing {
44+
installServing = true
45+
installEventing = true
46+
}
47+
4148
// kubectl is required, fail if not found
4249
if _, err := exec.LookPath("kubectl"); err != nil {
4350
fmt.Println("ERROR: kubectl is required for quickstart")
@@ -62,17 +69,23 @@ func SetUp(name, kVersion string) error {
6269
fmt.Println("\nPress the Enter key to continue")
6370
fmt.Scanln()
6471
}
65-
if err := install.Serving(); err != nil {
66-
return fmt.Errorf("install serving: %w", err)
67-
}
68-
if err := install.Kourier(); err != nil {
69-
return fmt.Errorf("install kourier: %w", err)
70-
}
71-
if err := install.KourierMinikube(); err != nil {
72-
return fmt.Errorf("configure kourier: %w", err)
72+
73+
if installServing {
74+
if err := install.Serving(); err != nil {
75+
return fmt.Errorf("install serving: %w", err)
76+
}
77+
if err := install.Kourier(); err != nil {
78+
return fmt.Errorf("install kourier: %w", err)
79+
}
80+
if err := install.KourierMinikube(); err != nil {
81+
return fmt.Errorf("configure kourier: %w", err)
82+
}
7383
}
74-
if err := install.Eventing(); err != nil {
75-
return fmt.Errorf("install eventing: %w", err)
84+
85+
if installEventing {
86+
if err := install.Eventing(); err != nil {
87+
return fmt.Errorf("install eventing: %w", err)
88+
}
7689
}
7790

7891
finish := time.Since(start).Round(time.Second)

0 commit comments

Comments
 (0)