From 4681320f8060e4e15831f524d448cc4cf7b55bdd Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Fri, 20 Sep 2019 12:11:49 -0700 Subject: [PATCH 01/10] got rid of errors in Stackdriver Logging (#245) --- src/emailservice/logger.py | 1 + src/loadgenerator/loadgen.sh | 2 +- src/recommendationservice/logger.py | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/emailservice/logger.py b/src/emailservice/logger.py index a7fb527..578595e 100644 --- a/src/emailservice/logger.py +++ b/src/emailservice/logger.py @@ -37,4 +37,5 @@ def getJSONLogger(name): handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.INFO) + logger.propagate = False return logger diff --git a/src/loadgenerator/loadgen.sh b/src/loadgenerator/loadgen.sh index 2a68db7..2a33434 100755 --- a/src/loadgenerator/loadgen.sh +++ b/src/loadgenerator/loadgen.sh @@ -24,4 +24,4 @@ if [[ -z "${FRONTEND_ADDR}" ]]; then fi set -x -locust --host="http://${FRONTEND_ADDR}" --no-web -c "${USERS:-10}" +locust --host="http://${FRONTEND_ADDR}" --no-web -c "${USERS:-10}" 2>&1 diff --git a/src/recommendationservice/logger.py b/src/recommendationservice/logger.py index a7fb527..578595e 100644 --- a/src/recommendationservice/logger.py +++ b/src/recommendationservice/logger.py @@ -37,4 +37,5 @@ def getJSONLogger(name): handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.INFO) + logger.propagate = False return logger From 2177813c44a83f3f6bc77e14d88accf986dd3a4c Mon Sep 17 00:00:00 2001 From: djmailhot Date: Sun, 29 Sep 2019 05:40:48 -0700 Subject: [PATCH 02/10] cartservice: Create genproto.sh (#249) * Add src/cartservice/genproto.sh * Add grpc generation to cartservice/genproto.sh * Remove grpc from cartservice/genproto.sh due to errors --- .../{generate_protos.bat => genproto.bat} | 0 src/cartservice/genproto.sh | 26 +++++++++++++++++++ 2 files changed, 26 insertions(+) rename src/cartservice/{generate_protos.bat => genproto.bat} (100%) create mode 100755 src/cartservice/genproto.sh diff --git a/src/cartservice/generate_protos.bat b/src/cartservice/genproto.bat similarity index 100% rename from src/cartservice/generate_protos.bat rename to src/cartservice/genproto.bat diff --git a/src/cartservice/genproto.sh b/src/cartservice/genproto.sh new file mode 100755 index 0000000..f1a8588 --- /dev/null +++ b/src/cartservice/genproto.sh @@ -0,0 +1,26 @@ +#!/bin/bash -eu +# +# Copyright 2018 Google LLC +# +# 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. + +# Generate the C# code for .proto files +set -e + +PROTODIR=../../pb + +# enter this directory +CWD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +protoc --csharp_out=$CWD/grpc_generated -I $PROTODIR $PROTODIR/demo.proto + From 24ca9eecef23b3c4e20cc58dc003113f713d8654 Mon Sep 17 00:00:00 2001 From: Joseph Sirianni Date: Wed, 16 Oct 2019 13:11:05 -0400 Subject: [PATCH 03/10] use python 3.7, as python:3-slim is now using python 3.8. (#254) --- src/emailservice/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emailservice/Dockerfile b/src/emailservice/Dockerfile index 3d649a5..ff88c76 100644 --- a/src/emailservice/Dockerfile +++ b/src/emailservice/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3-slim as base +FROM python:3.7-slim as base FROM base as builder From a95997be9439577086a579e328e278f87c7e14df Mon Sep 17 00:00:00 2001 From: Ben Wells Date: Wed, 16 Oct 2019 21:45:55 +0100 Subject: [PATCH 04/10] Remove deps files from node paymentservice (#252) --- src/paymentservice/Gopkg.lock | 9 --------- src/paymentservice/Gopkg.toml | 30 ------------------------------ 2 files changed, 39 deletions(-) delete mode 100644 src/paymentservice/Gopkg.lock delete mode 100644 src/paymentservice/Gopkg.toml diff --git a/src/paymentservice/Gopkg.lock b/src/paymentservice/Gopkg.lock deleted file mode 100644 index bef2d00..0000000 --- a/src/paymentservice/Gopkg.lock +++ /dev/null @@ -1,9 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - inputs-digest = "ab4fef131ee828e96ba67d31a7d690bd5f2f42040c6766b1b12fe856f87e0ff7" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/src/paymentservice/Gopkg.toml b/src/paymentservice/Gopkg.toml deleted file mode 100644 index d7072c2..0000000 --- a/src/paymentservice/Gopkg.toml +++ /dev/null @@ -1,30 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - - -[prune] - go-tests = true - unused-packages = true From ad4b29be93b5785b15c59586ae7b382b592921a3 Mon Sep 17 00:00:00 2001 From: Bruno Paulino Date: Fri, 1 Nov 2019 16:39:30 +0100 Subject: [PATCH 05/10] Fix README typo (#258) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d59e7e5..b8c776e 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Find **Protocol Buffers Descriptions** at the [`./pb` directory](./pb). | Service | Language | Description | | ---------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------- | | [frontend](./src/frontend) | Go | Exposes an HTTP server to serve the website. Does not require signup/login and generates session IDs for all users automatically. | -| [cartservice](./src/cartservice) | C# | Stores the items in the user's shipping cart in Redis and retrieves it. | +| [cartservice](./src/cartservice) | C# | Stores the items in the user's shopping cart in Redis and retrieves it. | | [productcatalogservice](./src/productcatalogservice) | Go | Provides the list of products from a JSON file and ability to search products and get individual products. | | [currencyservice](./src/currencyservice) | Node.js | Converts one money amount to another currency. Uses real values fetched from European Central Bank. It's the highest QPS service. | | [paymentservice](./src/paymentservice) | Node.js | Charges the given credit card info (mock) with the given amount and returns a transaction ID. | From 61dd04992bd2392ffbd05a98d3bff01111c12bf7 Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Mon, 4 Nov 2019 10:06:03 -0800 Subject: [PATCH 06/10] Fix skaffold install link Fixes #260. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index b8c776e..b34dbf6 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,7 @@ We offer three installation methods: - kubectl (can be installed via `gcloud components install kubectl`) - Docker for Desktop (Mac/Windows): It provides Kubernetes support as [noted here](https://docs.docker.com/docker-for-mac/kubernetes/). - - [skaffold](https://skaffold.dev/docs/getting-started/#installing-skaffold) - (ensure version ≥v0.20) + - [skaffold]( https://skaffold.dev/docs/install/) (ensure version ≥v0.20) 1. Launch “Docker for Desktop”. Go to Preferences: From 8cfb88bf2f4eb1843b08b45138b4020b5681493f Mon Sep 17 00:00:00 2001 From: Megan O'Keefe <3137106+askmeegs@users.noreply.github.com> Date: Mon, 16 Dec 2019 09:30:23 -0500 Subject: [PATCH 07/10] Standardizes loadgen behavior for Istio mTLS=STRICT (#279) * Adds liveness probe annotation, moves loadgen initcontainer into main * cleanup * cleanup * updated wrong manifests * respond to comments --- .gitignore | 2 +- README.md | 19 ++++++------------- kubernetes-manifests/frontend.yaml | 2 ++ kubernetes-manifests/loadgenerator.yaml | 16 +++------------- release/kubernetes-manifests.yaml | 8 ++++---- src/loadgenerator/Dockerfile | 3 +++ src/loadgenerator/loadgen.sh | 9 +++++++++ 7 files changed, 28 insertions(+), 31 deletions(-) diff --git a/.gitignore b/.gitignore index 60433d6..601a695 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,4 @@ pkg/ .vs/ .idea .skaffold-*.yaml -.kubernetes-manifests-*/ +.kubernetes-manifests-*/ \ No newline at end of file diff --git a/README.md b/README.md index b34dbf6..be43f70 100644 --- a/README.md +++ b/README.md @@ -212,35 +212,28 @@ by deploying the [release manifest](./release) directly to an existing cluster. --istio-config=auth=MTLS_PERMISSIVE ``` - > NOTE: If you need to enable `MTLS_STRICT` mode, you will need to update - > several manifest files: - > - > - `kubernetes-manifests/frontend.yaml`: delete "livenessProbe" and - > "readinessProbe" fields. - > - `kubernetes-manifests/loadgenerator.yaml`: delete "initContainers" field. - -1. (Optional) Enable Stackdriver Tracing/Logging with Istio Stackdriver Adapter +2. (Optional) Enable Stackdriver Tracing/Logging with Istio Stackdriver Adapter by [following this guide](https://cloud.google.com/istio/docs/istio-on-gke/installing#enabling_tracing_and_logging). -1. Install the automatic sidecar injection (annotate the `default` namespace +3. Install the automatic sidecar injection (annotate the `default` namespace with the label): ```sh kubectl label namespace default istio-injection=enabled ``` -1. Apply the manifests in [`./istio-manifests`](./istio-manifests) directory. +4. Apply the manifests in [`./istio-manifests`](./istio-manifests) directory. (This is required only once.) ```sh kubectl apply -f ./istio-manifests ``` -1. Deploy the application with `skaffold run --default-repo=gcr.io/[PROJECT_ID]`. +5. Deploy the application with `skaffold run --default-repo=gcr.io/[PROJECT_ID]`. -1. Run `kubectl get pods` to see pods are in a healthy and ready state. +6. Run `kubectl get pods` to see pods are in a healthy and ready state. -1. Find the IP address of your Istio gateway Ingress or Service, and visit the +7. Find the IP address of your Istio gateway Ingress or Service, and visit the application. ```sh diff --git a/kubernetes-manifests/frontend.yaml b/kubernetes-manifests/frontend.yaml index 5c5cd32..e6a0607 100644 --- a/kubernetes-manifests/frontend.yaml +++ b/kubernetes-manifests/frontend.yaml @@ -24,6 +24,8 @@ spec: metadata: labels: app: frontend + annotations: + sidecar.istio.io/rewriteAppHTTPProbers: "true" spec: containers: - name: server diff --git a/kubernetes-manifests/loadgenerator.yaml b/kubernetes-manifests/loadgenerator.yaml index c2aeb98..53e947e 100644 --- a/kubernetes-manifests/loadgenerator.yaml +++ b/kubernetes-manifests/loadgenerator.yaml @@ -11,7 +11,6 @@ # 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. - apiVersion: apps/v1 kind: Deployment metadata: @@ -25,20 +24,11 @@ spec: metadata: labels: app: loadgenerator + annotations: + sidecar.istio.io/rewriteAppHTTPProbers: "true" spec: terminationGracePeriodSeconds: 5 restartPolicy: Always - initContainers: - - name: wait-frontend - image: alpine:3.6 - command: ['sh', '-c', 'set -x; apk add --no-cache curl && - until timeout -t 2 curl -f "http://${FRONTEND_ADDR}"; do - echo "waiting for http://${FRONTEND_ADDR}"; - sleep 2; - done;'] - env: - - name: FRONTEND_ADDR - value: "frontend:80" containers: - name: main image: loadgenerator @@ -53,4 +43,4 @@ spec: memory: 256Mi limits: cpu: 500m - memory: 512Mi + memory: 512Mi \ No newline at end of file diff --git a/release/kubernetes-manifests.yaml b/release/kubernetes-manifests.yaml index 975ff6e..6a04843 100644 --- a/release/kubernetes-manifests.yaml +++ b/release/kubernetes-manifests.yaml @@ -450,9 +450,9 @@ spec: initContainers: - name: wait-frontend image: alpine:3.6 - command: ['sh', '-c', 'set -x; apk add --no-cache curl && - until timeout -t 2 curl -f "http://${FRONTEND_ADDR}"; do - echo "waiting for http://${FRONTEND_ADDR}"; + command: ['sh', '-c', 'set -x; apk add --no-cache curl && + until timeout -t 2 curl -f "http://${FRONTEND_ADDR}"; do + echo "waiting for http://${FRONTEND_ADDR}"; sleep 2; done;'] env: @@ -683,4 +683,4 @@ spec: - name: grpc port: 9555 targetPort: 9555 ---- +--- \ No newline at end of file diff --git a/src/loadgenerator/Dockerfile b/src/loadgenerator/Dockerfile index af7fa10..cdd89d4 100644 --- a/src/loadgenerator/Dockerfile +++ b/src/loadgenerator/Dockerfile @@ -15,4 +15,7 @@ COPY --from=builder /install /usr/local COPY . . RUN chmod +x ./loadgen.sh +RUN apt-get -qq update \ + && apt-get install -y --no-install-recommends \ + curl ENTRYPOINT ./loadgen.sh diff --git a/src/loadgenerator/loadgen.sh b/src/loadgenerator/loadgen.sh index 2a33434..79cc132 100755 --- a/src/loadgenerator/loadgen.sh +++ b/src/loadgenerator/loadgen.sh @@ -24,4 +24,13 @@ if [[ -z "${FRONTEND_ADDR}" ]]; then fi set -x + +# if one request to the frontend fails, then exit +STATUSCODE=$(curl --silent --output /dev/stderr --write-out "%{http_code}" http://${FRONTEND_ADDR}) +if test $STATUSCODE -ne 200; then + echo "Error: Could not reach frontend - Status code: ${STATUSCODE}" + exit 1 +fi + +# else, run loadgen locust --host="http://${FRONTEND_ADDR}" --no-web -c "${USERS:-10}" 2>&1 From 04b2084779f8d53bea0e036ed7aefef252c6eddb Mon Sep 17 00:00:00 2001 From: Megan O'Keefe <3137106+askmeegs@users.noreply.github.com> Date: Tue, 17 Dec 2019 13:41:59 -0500 Subject: [PATCH 08/10] [WIP] Fixes emailservice CrashLoop when Workload Identity is enabled (#280) * Adds explicit PROJECT_ID for stackdriver exporter * save work * cleanup --- kubernetes-manifests/emailservice.yaml | 5 ++--- src/emailservice/email_server.py | 4 +++- src/recommendationservice/recommendation_server.py | 7 +++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/kubernetes-manifests/emailservice.yaml b/kubernetes-manifests/emailservice.yaml index 2ae3823..14d293b 100644 --- a/kubernetes-manifests/emailservice.yaml +++ b/kubernetes-manifests/emailservice.yaml @@ -34,6 +34,8 @@ spec: env: - name: PORT value: "8080" + - name: ENABLE_PROFILER + value: "0" readinessProbe: periodSeconds: 5 exec: @@ -42,9 +44,6 @@ spec: periodSeconds: 5 exec: command: ["/bin/grpc_health_probe", "-addr=:8080"] - env: - - name: ENABLE_PROFILER - value: "0" resources: requests: cpu: 100m diff --git a/src/emailservice/email_server.py b/src/emailservice/email_server.py index 5af5ff9..9563b7a 100644 --- a/src/emailservice/email_server.py +++ b/src/emailservice/email_server.py @@ -37,7 +37,9 @@ import googlecloudprofiler try: sampler = always_on.AlwaysOnSampler() - exporter = stackdriver_exporter.StackdriverExporter() + exporter = stackdriver_exporter.StackdriverExporter( + project_id=os.environ.get('GCP_PROJECT_ID'), + transport=AsyncTransport) tracer_interceptor = server_interceptor.OpenCensusServerInterceptor(sampler, exporter) except: tracer_interceptor = server_interceptor.OpenCensusServerInterceptor() diff --git a/src/recommendationservice/recommendation_server.py b/src/recommendationservice/recommendation_server.py index 357f25f..c4e8fe6 100644 --- a/src/recommendationservice/recommendation_server.py +++ b/src/recommendationservice/recommendation_server.py @@ -99,7 +99,9 @@ if __name__ == "__main__": try: sampler = always_on.AlwaysOnSampler() - exporter = stackdriver_exporter.StackdriverExporter() + exporter = stackdriver_exporter.StackdriverExporter( + project_id=os.environ.get('GCP_PROJECT_ID'), + transport=AsyncTransport) tracer_interceptor = server_interceptor.OpenCensusServerInterceptor(sampler, exporter) except: tracer_interceptor = server_interceptor.OpenCensusServerInterceptor() @@ -123,7 +125,8 @@ if __name__ == "__main__": product_catalog_stub = demo_pb2_grpc.ProductCatalogServiceStub(channel) # create gRPC server - server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) # ,interceptors=(tracer_interceptor,)) + server = grpc.server(futures.ThreadPoolExecutor(max_workers=10), + interceptors=(tracer_interceptor,)) # add class to gRPC server service = RecommendationService() From 326e058e102a911ca5613f062ed2e23a1258e802 Mon Sep 17 00:00:00 2001 From: Megan O'Keefe Date: Tue, 17 Dec 2019 15:01:04 -0500 Subject: [PATCH 09/10] Release v0.1.3 --- release/kubernetes-manifests.yaml | 44 +++++++++++++------------------ 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/release/kubernetes-manifests.yaml b/release/kubernetes-manifests.yaml index 6a04843..8eb7b77 100644 --- a/release/kubernetes-manifests.yaml +++ b/release/kubernetes-manifests.yaml @@ -32,12 +32,14 @@ spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: gcr.io/google-samples/microservices-demo/emailservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/emailservice:v0.1.3 ports: - containerPort: 8080 env: - name: PORT value: "8080" + - name: ENABLE_PROFILER + value: "0" readinessProbe: periodSeconds: 5 exec: @@ -46,9 +48,6 @@ spec: periodSeconds: 5 exec: command: ["/bin/grpc_health_probe", "-addr=:8080"] - env: - - name: ENABLE_PROFILER - value: "0" resources: requests: cpu: 100m @@ -85,7 +84,7 @@ spec: spec: containers: - name: server - image: gcr.io/google-samples/microservices-demo/checkoutservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/checkoutservice:v0.1.3 ports: - containerPort: 5050 readinessProbe: @@ -148,7 +147,7 @@ spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: gcr.io/google-samples/microservices-demo/recommendationservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/recommendationservice:v0.1.3 ports: - containerPort: 8080 readinessProbe: @@ -199,10 +198,12 @@ spec: metadata: labels: app: frontend + annotations: + sidecar.istio.io/rewriteAppHTTPProbers: "true" spec: containers: - name: server - image: gcr.io/google-samples/microservices-demo/frontend:v0.1.2 + image: gcr.io/google-samples/microservices-demo/frontend:v0.1.3 ports: - containerPort: 8080 readinessProbe: @@ -290,7 +291,7 @@ spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: gcr.io/google-samples/microservices-demo/paymentservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/paymentservice:v0.1.3 ports: - containerPort: 50051 env: @@ -339,7 +340,7 @@ spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: gcr.io/google-samples/microservices-demo/productcatalogservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/productcatalogservice:v0.1.3 ports: - containerPort: 3550 env: @@ -391,7 +392,7 @@ spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: gcr.io/google-samples/microservices-demo/cartservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/cartservice:v0.1.3 ports: - containerPort: 7070 env: @@ -444,23 +445,14 @@ spec: metadata: labels: app: loadgenerator + annotations: + sidecar.istio.io/rewriteAppHTTPProbers: "true" spec: terminationGracePeriodSeconds: 5 restartPolicy: Always - initContainers: - - name: wait-frontend - image: alpine:3.6 - command: ['sh', '-c', 'set -x; apk add --no-cache curl && - until timeout -t 2 curl -f "http://${FRONTEND_ADDR}"; do - echo "waiting for http://${FRONTEND_ADDR}"; - sleep 2; - done;'] - env: - - name: FRONTEND_ADDR - value: "frontend:80" containers: - name: main - image: gcr.io/google-samples/microservices-demo/loadgenerator:v0.1.2 + image: gcr.io/google-samples/microservices-demo/loadgenerator:v0.1.3 env: - name: FRONTEND_ADDR value: "frontend:80" @@ -490,7 +482,7 @@ spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: gcr.io/google-samples/microservices-demo/currencyservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/currencyservice:v0.1.3 ports: - name: grpc containerPort: 7000 @@ -539,7 +531,7 @@ spec: spec: containers: - name: server - image: gcr.io/google-samples/microservices-demo/shippingservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/shippingservice:v0.1.3 ports: - containerPort: 50051 env: @@ -645,7 +637,7 @@ spec: terminationGracePeriodSeconds: 5 containers: - name: server - image: gcr.io/google-samples/microservices-demo/adservice:v0.1.2 + image: gcr.io/google-samples/microservices-demo/adservice:v0.1.3 ports: - containerPort: 9555 env: @@ -683,4 +675,4 @@ spec: - name: grpc port: 9555 targetPort: 9555 ---- \ No newline at end of file +--- From 53f25280949d2c41b2c31b11531a852f3a466b52 Mon Sep 17 00:00:00 2001 From: Daniel Sanche Date: Thu, 16 Jan 2020 15:48:57 -0800 Subject: [PATCH 10/10] Fix double shebang in loadgen.sh (#284) --- src/loadgenerator/loadgen.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/loadgenerator/loadgen.sh b/src/loadgenerator/loadgen.sh index 79cc132..4a0f35e 100755 --- a/src/loadgenerator/loadgen.sh +++ b/src/loadgenerator/loadgen.sh @@ -1,4 +1,4 @@ -#!/bin/sh -eu +#!/bin/bash # # Copyright 2018 Google LLC # @@ -14,7 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -#!/bin/bash set -e trap "exit" TERM