From bc165dbbafbd6edb7dbdd964bbb41089a961c552 Mon Sep 17 00:00:00 2001 From: RamiBerm Date: Tue, 11 May 2021 10:26:24 +0300 Subject: [PATCH] Update Makefile, version.go, and 3 more files... --- cli/Makefile | 2 +- cli/cmd/version.go | 2 +- cli/kubernetes/provider.go | 7 +++++-- cli/mizu/consts.go | 5 ++++- cli/mizu/mizuRunner.go | 21 ++++++++++----------- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 30633178b..38df0082b 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -11,7 +11,7 @@ install: go install mizu.go build: ## build mizu CLI binary (select platform via GOOS / GOARCH env variables) - go build -ldflags="-X 'github.com/up9inc/mizu/cli/mizu.Version=$(COMMIT_HASH)'" -o bin/$(FOLDER)/mizu mizu.go + go build -ldflags="-X 'github.com/up9inc/mizu/cli/mizu.GitCommitHash=$(COMMIT_HASH)'" -o bin/$(FOLDER)/mizu mizu.go build-all: ## build for all supported platforms @echo "Compiling for every OS and Platform" diff --git a/cli/cmd/version.go b/cli/cmd/version.go index dac008d27..16a068bca 100644 --- a/cli/cmd/version.go +++ b/cli/cmd/version.go @@ -11,7 +11,7 @@ var versionCmd = &cobra.Command{ Use: "version", Short: "Print version info", RunE: func(cmd *cobra.Command, args []string) error { - fmt.Printf("mizu version %s\n", mizu.Version) + fmt.Printf("%s %s\n", mizu.Version, mizu.GitCommitHash) return nil }, } diff --git a/cli/kubernetes/provider.go b/cli/kubernetes/provider.go index b48f37097..8ec3a98db 100644 --- a/cli/kubernetes/provider.go +++ b/cli/kubernetes/provider.go @@ -77,7 +77,7 @@ func (provider *Provider) GetPods(ctx context.Context, namespace string) { fmt.Printf("There are %d pods in Namespace %s\n", len(pods.Items), namespace) } -func (provider *Provider) CreateMizuPod(ctx context.Context, namespace string, podName string, podImage string, tappedPodNamespace string, tappedPodName string) (*core.Pod, error) { +func (provider *Provider) CreateMizuPod(ctx context.Context, namespace string, podName string, podImage string, tappedPodNamespace string, tappedPodName string, linkServiceAccount bool) (*core.Pod, error) { tappedPod, err := provider.clientSet.CoreV1().Pods(tappedPodNamespace).Get(ctx, tappedPodName, metav1.GetOptions{}) if err != nil { panic(err.Error()) @@ -117,11 +117,14 @@ func (provider *Provider) CreateMizuPod(ctx context.Context, namespace string, p }, }, }, - ServiceAccountName: serviceAccountName, TerminationGracePeriodSeconds: new(int64), NodeSelector: map[string]string{"kubernetes.io/hostname": tappedPod.Spec.NodeName}, }, } + //pod will crash if a non existent service account name is defined in spec + if linkServiceAccount { + pod.Spec.ServiceAccountName = serviceAccountName + } return provider.clientSet.CoreV1().Pods(namespace).Create(ctx, pod, metav1.CreateOptions{}) } diff --git a/cli/mizu/consts.go b/cli/mizu/consts.go index d676ab97e..356da23ab 100644 --- a/cli/mizu/consts.go +++ b/cli/mizu/consts.go @@ -1,6 +1,9 @@ package mizu -var Version = "development" // this var is overridden using ldflags in makefile when building +var ( + Version = "v0.0.1" + GitCommitHash = "" // this var is overridden using ldflags in makefile when building +) const ( MizuResourcesNamespace = "default" diff --git a/cli/mizu/mizuRunner.go b/cli/mizu/mizuRunner.go index f3dd70f51..37e94593d 100644 --- a/cli/mizu/mizuRunner.go +++ b/cli/mizu/mizuRunner.go @@ -19,8 +19,8 @@ func Run(tappedPodName string) { podName := "mizu-collector" - createRBACIfNecessary(ctx, kubernetesProvider, cancel) - go createPodAndPortForward(ctx, kubernetesProvider, cancel, podName, MizuResourcesNamespace, tappedPodName) //TODO convert this to job for built in pod ttl or have the running app handle this + mizuServiceAccountExists := createRBACIfNecessary(ctx, kubernetesProvider) + go createPodAndPortForward(ctx, kubernetesProvider, cancel, podName, MizuResourcesNamespace, tappedPodName, mizuServiceAccountExists) //TODO convert this to job for built in pod ttl or have the running app handle this waitForFinish(ctx, cancel) //block until exit signal or error // TODO handle incoming traffic from tapper using a channel @@ -53,8 +53,8 @@ func watchPodsForTapping(ctx context.Context, kubernetesProvider *kubernetes.Pro } } -func createPodAndPortForward(ctx context.Context, kubernetesProvider *kubernetes.Provider, cancel context.CancelFunc, podName string, namespace string, tappedPodName string) { - pod, err := kubernetesProvider.CreateMizuPod(ctx, MizuResourcesNamespace, podName, config.Configuration.MizuImage, kubernetesProvider.Namespace, tappedPodName) +func createPodAndPortForward(ctx context.Context, kubernetesProvider *kubernetes.Provider, cancel context.CancelFunc, podName string, namespace string, tappedPodName string, linkServiceAccount bool) { + pod, err := kubernetesProvider.CreateMizuPod(ctx, MizuResourcesNamespace, podName, config.Configuration.MizuImage, kubernetesProvider.Namespace, tappedPodName, linkServiceAccount) if err != nil { fmt.Printf("error creating pod %s", err) cancel() @@ -102,21 +102,20 @@ func createPodAndPortForward(ctx context.Context, kubernetesProvider *kubernetes } } -func createRBACIfNecessary(ctx context.Context, kubernetesProvider *kubernetes.Provider, cancel context.CancelFunc) { +func createRBACIfNecessary(ctx context.Context, kubernetesProvider *kubernetes.Provider) bool { mizuRBACExists, err := kubernetesProvider.DoesMizuRBACExist(ctx, MizuResourcesNamespace) if err != nil { - fmt.Printf("error checking rbac %v", err) - cancel() - return + fmt.Printf("warning: could not ensure mizu rbac resources exist %v", err) + return false } if !mizuRBACExists { err := kubernetesProvider.CreateMizuRBAC(ctx, MizuResourcesNamespace, Version) if err != nil { - fmt.Printf("error creating rbac %v", err) - cancel() - return + fmt.Printf("warning: could not create mizu rbac resources %v", err) + return false } } + return true } func waitForFinish(ctx context.Context, cancel context.CancelFunc) {