From 5acf189fbe8b57183314bf5ea9eceb9b0d3f9d77 Mon Sep 17 00:00:00 2001 From: Sanskar Jaiswal Date: Tue, 8 Mar 2022 19:29:00 +0530 Subject: [PATCH] remove support for helmv2 in loadtester Signed-off-by: Sanskar Jaiswal --- Dockerfile.loadtester | 17 +----------- cmd/loadtester/main.go | 4 +-- pkg/loadtester/helm.go | 58 ---------------------------------------- pkg/loadtester/helmv3.go | 5 ++-- pkg/loadtester/server.go | 32 ++-------------------- 5 files changed, 8 insertions(+), 108 deletions(-) delete mode 100644 pkg/loadtester/helm.go diff --git a/Dockerfile.loadtester b/Dockerfile.loadtester index 2251e9d05..6d2a1581a 100644 --- a/Dockerfile.loadtester +++ b/Dockerfile.loadtester @@ -6,14 +6,9 @@ ARG REVISION RUN apk --no-cache add alpine-sdk perl curl bash tar -RUN HELM2_VERSION=2.17.0 && \ -curl -sSL "https://get.helm.sh/helm-v${HELM2_VERSION}-linux-${TARGETARCH}.tar.gz" | tar xvz && \ -chmod +x linux-${TARGETARCH}/helm && mv linux-${TARGETARCH}/helm /usr/local/bin/helm && \ -chmod +x linux-${TARGETARCH}/tiller && mv linux-${TARGETARCH}/tiller /usr/local/bin/tiller - RUN HELM3_VERSION=3.7.2 && \ curl -sSL "https://get.helm.sh/helm-v${HELM3_VERSION}-linux-${TARGETARCH}.tar.gz" | tar xvz && \ -chmod +x linux-${TARGETARCH}/helm && mv linux-${TARGETARCH}/helm /usr/local/bin/helmv3 +chmod +x linux-${TARGETARCH}/helm && mv linux-${TARGETARCH}/helm /usr/local/bin/helm RUN GRPC_HEALTH_PROBE_VERSION=v0.4.6 && \ wget -qO /usr/local/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-${TARGETARCH} && \ @@ -24,10 +19,6 @@ curl -sSL "https://github.com/bojand/ghz/archive/refs/tags/v${GHZ_VERSION}.tar.g cd /tmp/ghz-${GHZ_VERSION}/cmd/ghz && GOARCH=$TARGETARCH go build . && mv ghz /usr/local/bin && \ chmod +x /usr/local/bin/ghz -RUN HELM_TILLER_VERSION=0.9.3 && \ -curl -sSL "https://github.com/rimusz/helm-tiller/archive/refs/tags/v${HELM_TILLER_VERSION}.tar.gz" | \ -tar xz -C /tmp && mv /tmp/helm-tiller-${HELM_TILLER_VERSION} /tmp/helm-tiller - WORKDIR /workspace # copy modules manifests @@ -58,11 +49,8 @@ COPY --from=bats/bats:v1.1.0 /opt/bats/ /opt/bats/ RUN ln -s /opt/bats/bin/bats /usr/local/bin/ COPY --from=builder /usr/local/bin/helm /usr/local/bin/ -COPY --from=builder /usr/local/bin/tiller /usr/local/bin/ COPY --from=builder /usr/local/bin/ghz /usr/local/bin/ -COPY --from=builder /usr/local/bin/helmv3 /usr/local/bin/ COPY --from=builder /usr/local/bin/grpc_health_probe /usr/local/bin/ -COPY --from=builder /tmp/helm-tiller /tmp/helm-tiller ADD https://raw.githubusercontent.com/grpc/grpc-proto/master/grpc/health/v1/health.proto /tmp/ghz/health.proto @@ -75,9 +63,6 @@ USER app RUN hey -n 1 -c 1 https://flagger.app > /dev/null && echo $? | grep 0 RUN wrk -d 1s -c 1 -t 1 https://flagger.app > /dev/null && echo $? | grep 0 -# install Helm v2 plugins -RUN helm init --stable-repo-url=https://charts.helm.sh/stable --client-only && helm plugin install /tmp/helm-tiller - COPY --from=builder --chown=app:app /workspace/loadtester . ENTRYPOINT ["./loadtester"] diff --git a/cmd/loadtester/main.go b/cmd/loadtester/main.go index 648116e43..8414714af 100644 --- a/cmd/loadtester/main.go +++ b/cmd/loadtester/main.go @@ -1,5 +1,5 @@ /* -Copyright 2020 The Flux authors +Copyright 2020, 2022 The Flux authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -28,7 +28,7 @@ import ( "go.uber.org/zap" ) -var VERSION = "0.21.0" +var VERSION = "0.22.0" var ( logLevel string port string diff --git a/pkg/loadtester/helm.go b/pkg/loadtester/helm.go deleted file mode 100644 index b045e6808..000000000 --- a/pkg/loadtester/helm.go +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2020 The Flux authors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package loadtester - -import ( - "context" - "fmt" - "os/exec" - "strings" -) - -const TaskTypeHelm = "helm" - -type HelmTask struct { - TaskBase - command string - logCmdOutput bool -} - -func (task *HelmTask) Hash() string { - return hash(task.canary + task.command) -} - -func (task *HelmTask) Run(ctx context.Context) (*TaskRunResult, error) { - helmCmd := fmt.Sprintf("%s %s", TaskTypeHelm, task.command) - task.logger.With("canary", task.canary).Infof("running command %v", helmCmd) - - cmd := exec.CommandContext(ctx, TaskTypeHelm, strings.Fields(task.command)...) - out, err := cmd.CombinedOutput() - if err != nil { - task.logger.With("canary", task.canary).Errorf("command failed %s %v %s", task.command, err, out) - return &TaskRunResult{false, out}, fmt.Errorf("command %s failed: %s: %w", task.command, out, err) - } else { - if task.logCmdOutput { - fmt.Printf("%s\n", out) - } - task.logger.With("canary", task.canary).Infof("command finished %v", helmCmd) - } - return &TaskRunResult{true, out}, nil -} - -func (task *HelmTask) String() string { - return task.command -} diff --git a/pkg/loadtester/helmv3.go b/pkg/loadtester/helmv3.go index 29f3e1c8d..c801952b8 100644 --- a/pkg/loadtester/helmv3.go +++ b/pkg/loadtester/helmv3.go @@ -1,5 +1,5 @@ /* -Copyright 2020 The Flux authors +Copyright 2020, 2022 The Flux authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import ( ) const TaskTypeHelmv3 = "helmv3" +const TaskTypeHelm = "helm" type HelmTaskv3 struct { TaskBase @@ -39,7 +40,7 @@ func (task *HelmTaskv3) Run(ctx context.Context) (*TaskRunResult, error) { helmCmd := fmt.Sprintf("%s %s", TaskTypeHelmv3, task.command) task.logger.With("canary", task.canary).Infof("running command %v", helmCmd) - cmd := exec.CommandContext(ctx, TaskTypeHelmv3, strings.Fields(task.command)...) + cmd := exec.CommandContext(ctx, TaskTypeHelm, strings.Fields(task.command)...) out, err := cmd.CombinedOutput() if err != nil { task.logger.With("canary", task.canary).Errorf("command failed %s %v %s", task.command, err, out) diff --git a/pkg/loadtester/server.go b/pkg/loadtester/server.go index 779cc5edc..ce1664458 100644 --- a/pkg/loadtester/server.go +++ b/pkg/loadtester/server.go @@ -1,5 +1,5 @@ /* -Copyright 2020 The Flux authors +Copyright 2020, 2022 The Flux authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -335,36 +335,8 @@ func HandleNewTask(logger *zap.SugaredLogger, taskRunner TaskRunnerInterface, au return } - // run helm command (blocking task) - if typ == TaskTypeHelm { - helm := HelmTask{ - command: payload.Metadata["cmd"], - logCmdOutput: true, - TaskBase: TaskBase{ - canary: fmt.Sprintf("%s.%s", payload.Name, payload.Namespace), - logger: logger, - }, - } - - ctx, cancel := context.WithTimeout(context.Background(), taskRunner.Timeout()) - defer cancel() - - result, err := helm.Run(ctx) - if !result.ok { - w.WriteHeader(http.StatusInternalServerError) - w.Write([]byte(err.Error())) - return - } - - w.WriteHeader(http.StatusOK) - if rtnCmdOutput { - w.Write(result.out) - } - return - } - // run helmv3 command (blocking task) - if typ == TaskTypeHelmv3 { + if typ == TaskTypeHelmv3 || typ == TaskTypeHelm { helm := HelmTaskv3{ command: payload.Metadata["cmd"], logCmdOutput: true,