From 6fb09934a7511db450623e06b1bee7056828d991 Mon Sep 17 00:00:00 2001 From: David Souther Date: Fri, 10 May 2019 13:37:40 -0400 Subject: [PATCH 01/27] Add Signals & Cloud Topology to footer. --- src/frontend/templates/footer.html | 3 ++- src/frontend/templates/home.html | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/frontend/templates/footer.html b/src/frontend/templates/footer.html index 0ca31e1..a331d34 100644 --- a/src/frontend/templates/footer.html +++ b/src/frontend/templates/footer.html @@ -10,7 +10,8 @@

This website is hosted for demo purposes only. It is not an - actual shop. This is not an official Google project. + actual shop. This is not an official Google project. Created + by Google Cloud & Signals Monitoring Topology.

diff --git a/src/frontend/templates/home.html b/src/frontend/templates/home.html index 1d97c6a..5d64528 100644 --- a/src/frontend/templates/home.html +++ b/src/frontend/templates/home.html @@ -17,6 +17,9 @@ you catch up with the hipster trend and express your personal style. Start shopping hip and vintage items now!

+

+ Cloud Topology +

From de3d8abc045786227be4d3ffbb3692d1a33b5acc Mon Sep 17 00:00:00 2001 From: asamanta Date: Fri, 10 May 2019 14:17:26 -0400 Subject: [PATCH 02/27] added frontend-b --- kubernetes-manifests/frontend.yaml | 68 +++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/kubernetes-manifests/frontend.yaml b/kubernetes-manifests/frontend.yaml index 5c5cd32..4cea9bc 100644 --- a/kubernetes-manifests/frontend.yaml +++ b/kubernetes-manifests/frontend.yaml @@ -15,15 +15,80 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: frontend + name: frontend-a spec: selector: matchLabels: app: frontend + env: a template: metadata: labels: app: frontend + env: a + spec: + containers: + - name: server + image: frontend + ports: + - containerPort: 8080 + readinessProbe: + initialDelaySeconds: 10 + httpGet: + path: "/_healthz" + port: 8080 + httpHeaders: + - name: "Cookie" + value: "shop_session-id=x-readiness-probe" + livenessProbe: + initialDelaySeconds: 10 + httpGet: + path: "/_healthz" + port: 8080 + httpHeaders: + - name: "Cookie" + value: "shop_session-id=x-liveness-probe" + env: + - name: PORT + value: "8080" + - name: PRODUCT_CATALOG_SERVICE_ADDR + value: "productcatalogservice:3550" + - name: CURRENCY_SERVICE_ADDR + value: "currencyservice:7000" + - name: CART_SERVICE_ADDR + value: "cartservice:7070" + - name: RECOMMENDATION_SERVICE_ADDR + value: "recommendationservice:8080" + - name: SHIPPING_SERVICE_ADDR + value: "shippingservice:50051" + - name: CHECKOUT_SERVICE_ADDR + value: "checkoutservice:5050" + - name: AD_SERVICE_ADDR + value: "adservice:9555" + # - name: JAEGER_SERVICE_ADDR + # value: "jaeger-collector:14268" + resources: + requests: + cpu: 100m + memory: 64Mi + limits: + cpu: 200m + memory: 128Mi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend-b +spec: + selector: + matchLabels: + app: frontend + env: b + template: + metadata: + labels: + app: frontend + env: b spec: containers: - name: server @@ -94,6 +159,7 @@ spec: type: LoadBalancer selector: app: frontend + env: b ports: - name: http port: 80 From 035b2958b6bbac64e6ac2dcda4f8f801e8f258f3 Mon Sep 17 00:00:00 2001 From: David Souther Date: Fri, 10 May 2019 15:10:52 -0400 Subject: [PATCH 03/27] Bump footer copy at devrel request --- src/frontend/templates/footer.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/frontend/templates/footer.html b/src/frontend/templates/footer.html index a331d34..c98eebb 100644 --- a/src/frontend/templates/footer.html +++ b/src/frontend/templates/footer.html @@ -10,8 +10,9 @@

This website is hosted for demo purposes only. It is not an - actual shop. This is not an official Google project. Created - by Google Cloud & Signals Monitoring Topology. + actual shop. This is not an official Google project. Demo + deployment for Google Cloud & Signals Monitoring + Topology.

From f29d1e52ca86f2027e2d425b2c4b0cf4db06b111 Mon Sep 17 00:00:00 2001 From: asamanta Date: Wed, 15 May 2019 11:41:22 -0400 Subject: [PATCH 04/27] adding build.out --- build.out | 1 + 1 file changed, 1 insertion(+) create mode 100644 build.out diff --git a/build.out b/build.out new file mode 100644 index 0000000..9bb71ba --- /dev/null +++ b/build.out @@ -0,0 +1 @@ +{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-26-gff80ed8@sha256:b5642298862ce0852e6038cf029ed75df6a08530c3ca9b86cd2ad4b50d5cff00"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-26-gff80ed8@sha256:74288be0207731ee0f846273da3486638777cf8d4077bddd45e0aeac75bb3559"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-26-gff80ed8@sha256:41f79b358ddf3d22f2f317caab5585fbaccf9ce75052f57a2e3da03a29b4a65e"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-26-gff80ed8@sha256:6625a1e45b63c32585248a51d32b1b5137c16c7fb0f622ee9efbd08ef0cfed42"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-26-gff80ed8@sha256:cab8d517f524609837c7c70d357d7ba4aeb836dc417414d726079ed811928804"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-26-gff80ed8@sha256:1d65c32c95fbf5fe7348e8d4975bf15a305279f78264f342734afc3d1273a7cb"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-26-gff80ed8@sha256:e6a17c4d41d5e95d5182dfea2bbac392dee5ac5d965e0a35af70ef11edc7c0a1"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-26-gff80ed8@sha256:2d6b7b6422669a0850f3743c734d300cbcf247fe850127ea99f695e831e32374"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-26-gff80ed8@sha256:119a11554f457f3a4df05672de4f51050f305fba67482b242543ec6fb4ed1f05"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-26-gff80ed8@sha256:dcd70533d44517a2c5460e20b7e001c79e54e009f5c42ebcb52474bcd1610fa9"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-26-gff80ed8@sha256:39a383bafca249864cd67a8eac66e67a19dc107b46566d7e16501c4f15ee0935"}]} \ No newline at end of file From 3053dd7568566b500706be1a4d5474a744478043 Mon Sep 17 00:00:00 2001 From: asamanta Date: Wed, 15 May 2019 16:33:52 -0400 Subject: [PATCH 05/27] adding istio canary --- .../recommendationservice.yaml | 85 ++++++++++++++++--- 1 file changed, 75 insertions(+), 10 deletions(-) diff --git a/kubernetes-manifests/recommendationservice.yaml b/kubernetes-manifests/recommendationservice.yaml index 1ccc4ab..9a5aee3 100644 --- a/kubernetes-manifests/recommendationservice.yaml +++ b/kubernetes-manifests/recommendationservice.yaml @@ -15,15 +15,17 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: recommendationservice + name: recommendationservice-v1 spec: selector: matchLabels: app: recommendationservice + version: v1 template: metadata: labels: app: recommendationservice + version: v1 spec: terminationGracePeriodSeconds: 5 containers: @@ -54,15 +56,78 @@ spec: cpu: 200m memory: 450Mi --- -apiVersion: v1 -kind: Service +apiVersion: apps/v1 +kind: Deployment +metadata: + name: recommendationservice-v2 +spec: + selector: + matchLabels: + app: recommendationservice + version: v2 + template: + metadata: + labels: + app: recommendationservice + version: v2 + spec: + terminationGracePeriodSeconds: 5 + containers: + - name: server + image: recommendationservice + ports: + - containerPort: 8080 + readinessProbe: + periodSeconds: 5 + exec: + command: ["/bin/grpc_health_probe", "-addr=:8080"] + livenessProbe: + periodSeconds: 5 + exec: + command: ["/bin/grpc_health_probe", "-addr=:8080"] + env: + - name: PORT + value: "8080" + - name: PRODUCT_CATALOG_SERVICE_ADDR + value: "productcatalogservice:3550" + - name: ENABLE_PROFILER + value: "0" + resources: + requests: + cpu: 100m + memory: 220Mi + limits: + cpu: 200m + memory: 450Mi +--- +apiVersion: networking.istio.io/v1alpha3 +kind: VirtualService metadata: name: recommendationservice spec: - type: ClusterIP - selector: - app: recommendationservice - ports: - - name: grpc - port: 8080 - targetPort: 8080 + hosts: + - recommendationservice + http: + - route: + - destination: + host: recommendationservice + subset: v1 + weight: 90 + - destination: + host: recommendationservice + subset: v2 + weight: 10 +--- +apiVersion: networking.istio.io/v1alpha3 +kind: DestinationRule +metadata: + name: recommendationservice +spec: + host: recommendationservice + subsets: + - name: v1 + labels: + version: v1 + - name: v2 + labels: + version: v2 From 8f65f321e1d791303af766a228f00b6f6329f1b4 Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Mon, 20 May 2019 13:29:49 -0400 Subject: [PATCH 06/27] Force AdService to use 5 pods --- kubernetes-manifests/adservice.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/kubernetes-manifests/adservice.yaml b/kubernetes-manifests/adservice.yaml index 713ebcd..47f14a6 100644 --- a/kubernetes-manifests/adservice.yaml +++ b/kubernetes-manifests/adservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: adservice spec: + replicas: 5 selector: matchLabels: app: adservice From a6369c79e375a6449283696183480a0544e2c212 Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Mon, 20 May 2019 16:03:31 -0400 Subject: [PATCH 07/27] Currency service injects additional latency on predictable schedule --- src/currencyservice/server.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/currencyservice/server.js b/src/currencyservice/server.js index d3e9ad1..1669cd9 100644 --- a/src/currencyservice/server.js +++ b/src/currencyservice/server.js @@ -71,7 +71,13 @@ function _loadProto (path) { */ function _getCurrencyData (callback) { const data = require('./data/currency_conversion.json'); - callback(data); + // Currency conversion API slows down during peak hours. + let delay = 0; + const hour = new Date().getHours(); + if (hour > 8 && hour < 17) { + delay = 100; // add 100ms slowdown + } + setTimeout(callback(data), delay); } /** From a9f4759f419c6ad50d613dd73e5b02feda5f0efe Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Mon, 20 May 2019 16:07:39 -0400 Subject: [PATCH 08/27] setTimeout takes function --- src/currencyservice/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/currencyservice/server.js b/src/currencyservice/server.js index 1669cd9..ed6b099 100644 --- a/src/currencyservice/server.js +++ b/src/currencyservice/server.js @@ -77,7 +77,7 @@ function _getCurrencyData (callback) { if (hour > 8 && hour < 17) { delay = 100; // add 100ms slowdown } - setTimeout(callback(data), delay); + setTimeout(() => callback(data), delay); } /** From 0b4f57724077561ec69a0937afedd8dec8b61310 Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Tue, 21 May 2019 14:33:54 -0400 Subject: [PATCH 09/27] varied load generator --- src/loadgenerator/locustfile.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/loadgenerator/locustfile.py b/src/loadgenerator/locustfile.py index f1f98ea..a51a245 100644 --- a/src/loadgenerator/locustfile.py +++ b/src/loadgenerator/locustfile.py @@ -14,7 +14,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +import math import random +import time from locust import HttpLocust, TaskSet products = [ @@ -65,10 +67,24 @@ def checkout(l): }) class UserBehavior(TaskSet): + min_wait = 1000 + max_wait = 20000 def on_start(self): index(self) + def wait_function(self): + # Compute user's activity rate (wait time between actions) so traffic is + # diurnal; minimum at hrs=0.0|24.0 and maximum at hrs=12.0. + now = time.localtime() + hrs = now.tm_hour + now.tm_min/60.0 + # Compute scale factor is between 0 and 1. + traffic_scaler = -1.0 * math.cos(2.0 * math.pi * hrs / 24) + traffic_scaler = (traffic_scaler + 1) / 2.0 + + # Scale traffic between minimum and maximum wait times. + return self.max_wait + (self.min_wait - self.max_wait) * traffic_scaler + tasks = {index: 1, setCurrency: 2, browseProduct: 10, @@ -78,5 +94,3 @@ class UserBehavior(TaskSet): class WebsiteUser(HttpLocust): task_set = UserBehavior - min_wait = 1000 - max_wait = 10000 From 3a12c74af39e18720242c732d0d717fb930988da Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Wed, 22 May 2019 09:53:52 -0400 Subject: [PATCH 10/27] Should now actually work --- .gitignore | 1 + kubernetes-manifests/loadgenerator.yaml | 6 ++--- src/loadgenerator/Dockerfile | 3 ++- src/loadgenerator/loadgen.sh | 9 +++++-- src/loadgenerator/locustfile.py | 31 ++++++++++++++++--------- src/loadgenerator/requirements.in | 2 +- src/loadgenerator/requirements.txt | 6 ++--- 7 files changed, 37 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index 60433d6..1e1f40a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ pkg/ .idea .skaffold-*.yaml .kubernetes-manifests-*/ +env/ diff --git a/kubernetes-manifests/loadgenerator.yaml b/kubernetes-manifests/loadgenerator.yaml index c2aeb98..3385337 100644 --- a/kubernetes-manifests/loadgenerator.yaml +++ b/kubernetes-manifests/loadgenerator.yaml @@ -31,9 +31,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: diff --git a/src/loadgenerator/Dockerfile b/src/loadgenerator/Dockerfile index cebb98c..a77fd2c 100644 --- a/src/loadgenerator/Dockerfile +++ b/src/loadgenerator/Dockerfile @@ -14,4 +14,5 @@ FROM base COPY --from=builder /install /usr/local COPY . . -ENTRYPOINT ./loadgen.sh +ENTRYPOINT ["./loadgen.sh"] + diff --git a/src/loadgenerator/loadgen.sh b/src/loadgenerator/loadgen.sh index 2a68db7..23477fa 100755 --- a/src/loadgenerator/loadgen.sh +++ b/src/loadgenerator/loadgen.sh @@ -18,10 +18,15 @@ set -e trap "exit" TERM -if [[ -z "${FRONTEND_ADDR}" ]]; then +if [ -z "${FRONTEND_ADDR}" ]; then echo >&2 "FRONTEND_ADDR not specified" exit 1 fi set -x -locust --host="http://${FRONTEND_ADDR}" --no-web -c "${USERS:-10}" +locust \ + -f locustfile.py \ + --host="http://${FRONTEND_ADDR}" \ + --no-web \ + -c "${USERS:-10}" \ + -r 1 diff --git a/src/loadgenerator/locustfile.py b/src/loadgenerator/locustfile.py index a51a245..ebafae6 100644 --- a/src/loadgenerator/locustfile.py +++ b/src/loadgenerator/locustfile.py @@ -30,26 +30,32 @@ products = [ 'LS4PSXUNUM', 'OLJCESPC7Z'] + def index(l): l.client.get("/") + def setCurrency(l): currencies = ['EUR', 'USD', 'JPY', 'CAD'] l.client.post("/setCurrency", - {'currency_code': random.choice(currencies)}) + {'currency_code': random.choice(currencies)}) + def browseProduct(l): l.client.get("/product/" + random.choice(products)) + def viewCart(l): l.client.get("/cart") + def addToCart(l): product = random.choice(products) l.client.get("/product/" + product) l.client.post("/cart", { 'product_id': product, - 'quantity': random.choice([1,2,3,4,5,10])}) + 'quantity': random.choice([1, 2, 3, 4, 5, 10])}) + def checkout(l): addToCart(l) @@ -66,9 +72,17 @@ def checkout(l): 'credit_card_cvv': '672', }) + class UserBehavior(TaskSet): - min_wait = 1000 - max_wait = 20000 + min_wait = 500 + max_wait = 1500 + + tasks = {index: 1, + setCurrency: 2, + browseProduct: 10, + addToCart: 2, + viewCart: 3, + checkout: 1} def on_start(self): index(self) @@ -83,14 +97,9 @@ class UserBehavior(TaskSet): traffic_scaler = (traffic_scaler + 1) / 2.0 # Scale traffic between minimum and maximum wait times. - return self.max_wait + (self.min_wait - self.max_wait) * traffic_scaler + wait = self.max_wait + (self.min_wait - self.max_wait) * traffic_scaler + return round(wait) - tasks = {index: 1, - setCurrency: 2, - browseProduct: 10, - addToCart: 2, - viewCart: 3, - checkout: 1} class WebsiteUser(HttpLocust): task_set = UserBehavior diff --git a/src/loadgenerator/requirements.in b/src/loadgenerator/requirements.in index 0b66c0a..280aa5f 100644 --- a/src/loadgenerator/requirements.in +++ b/src/loadgenerator/requirements.in @@ -1 +1 @@ -locustio==0.8.1 +locustio==0.9.0 diff --git a/src/loadgenerator/requirements.txt b/src/loadgenerator/requirements.txt index ac69aca..60993cd 100644 --- a/src/loadgenerator/requirements.txt +++ b/src/loadgenerator/requirements.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile # To update, run: # -# pip-compile --output-file requirements.txt requirements.in +# pip-compile --output-file=requirements.txt requirements.in # certifi==2018.11.29 # via requests chardet==3.0.4 # via requests @@ -13,9 +13,9 @@ greenlet==0.4.15 # via gevent idna==2.8 # via requests itsdangerous==1.1.0 # via flask jinja2==2.10 # via flask -locustio==0.8.1 +locustio==0.9.0 markupsafe==1.1.0 # via jinja2 -msgpack-python==0.5.6 # via locustio +msgpack==0.6.1 # via locustio pyzmq==17.0.0 # via locustio requests==2.21.0 # via locustio six==1.12.0 # via locustio From 6e6db3b7e5260fe8b5a5d12787834a97644f5ffb Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Wed, 22 May 2019 10:22:58 -0400 Subject: [PATCH 11/27] Set min and max waits to something closer to the master repo --- src/loadgenerator/locustfile.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/loadgenerator/locustfile.py b/src/loadgenerator/locustfile.py index ebafae6..eb81322 100644 --- a/src/loadgenerator/locustfile.py +++ b/src/loadgenerator/locustfile.py @@ -75,7 +75,7 @@ def checkout(l): class UserBehavior(TaskSet): min_wait = 500 - max_wait = 1500 + max_wait = 15000 tasks = {index: 1, setCurrency: 2, @@ -88,8 +88,11 @@ class UserBehavior(TaskSet): index(self) def wait_function(self): - # Compute user's activity rate (wait time between actions) so traffic is - # diurnal; minimum at hrs=0.0|24.0 and maximum at hrs=12.0. + """Wait time between user activity is diurnal. + + Compute user's activity rate (wait time between actions) so traffic is + minimum at hrs=0.0|24.0 and maximum at hrs=12.0. + """ now = time.localtime() hrs = now.tm_hour + now.tm_min/60.0 # Compute scale factor is between 0 and 1. From 0268d5e8a8b6f491ffd2e518cd76604c224dface Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Wed, 29 May 2019 14:06:30 -0400 Subject: [PATCH 12/27] Update build.out --- build.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.out b/build.out index 9bb71ba..eefcc8a 100644 --- a/build.out +++ b/build.out @@ -1 +1 @@ -{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-26-gff80ed8@sha256:b5642298862ce0852e6038cf029ed75df6a08530c3ca9b86cd2ad4b50d5cff00"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-26-gff80ed8@sha256:74288be0207731ee0f846273da3486638777cf8d4077bddd45e0aeac75bb3559"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-26-gff80ed8@sha256:41f79b358ddf3d22f2f317caab5585fbaccf9ce75052f57a2e3da03a29b4a65e"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-26-gff80ed8@sha256:6625a1e45b63c32585248a51d32b1b5137c16c7fb0f622ee9efbd08ef0cfed42"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-26-gff80ed8@sha256:cab8d517f524609837c7c70d357d7ba4aeb836dc417414d726079ed811928804"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-26-gff80ed8@sha256:1d65c32c95fbf5fe7348e8d4975bf15a305279f78264f342734afc3d1273a7cb"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-26-gff80ed8@sha256:e6a17c4d41d5e95d5182dfea2bbac392dee5ac5d965e0a35af70ef11edc7c0a1"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-26-gff80ed8@sha256:2d6b7b6422669a0850f3743c734d300cbcf247fe850127ea99f695e831e32374"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-26-gff80ed8@sha256:119a11554f457f3a4df05672de4f51050f305fba67482b242543ec6fb4ed1f05"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-26-gff80ed8@sha256:dcd70533d44517a2c5460e20b7e001c79e54e009f5c42ebcb52474bcd1610fa9"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-26-gff80ed8@sha256:39a383bafca249864cd67a8eac66e67a19dc107b46566d7e16501c4f15ee0935"}]} \ No newline at end of file +{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-33-g6e6db3b@sha256:593de0cc94b95fa033838a3d3f3dc0168cc35f736b01ace2954b3648771e1027"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-33-g6e6db3b@sha256:29dc89ac7aa66dcb70fd1c9e84f422a5e0c4bcb117ed0cb29c7cd6282ab13bbe"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-33-g6e6db3b@sha256:de6cddba59ea40a879baf25b2ae58dd06b64532d0ca52dda4c4b6d22e577f0d6"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-33-g6e6db3b@sha256:0ee734d45b10760c0d01bf3ca27a85b56296337adfe540f344860b2de1eb0277"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-33-g6e6db3b@sha256:d9b7a695508b8df8d894d4b1ea24ebc8f651c069daab64df4acb2556c72ace1d"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-33-g6e6db3b@sha256:93d422fe681b9ac2aed353b5b22f447dcd305bb297980edb0dfd68719e9dde65"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-33-g6e6db3b@sha256:5dd9f85c65b0ab000f759ea37d78ff06643ea800220e9e34c251f3c1e33ab2b9"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-33-g6e6db3b@sha256:6cc3baab0bdf2eda1ec9da076a102007c851a665c9fd8ee99d741c734c8a85fe"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-33-g6e6db3b@sha256:43d6cbbfb02cb9a4435063c63127f1f4e22a8954f38cc78159c1ae7e44700bdd"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-33-g6e6db3b@sha256:88ece337b51771e0a10cc09d8db31dd474d93fcbc47b145a9d9f6a27e24a5fb4"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-33-g6e6db3b@sha256:dcb2c1644648b9c18c6fc48ad7fc1a15f4dc890ad3fca531b9892d6cfdf1a305"}]} \ No newline at end of file From bf399b6ed0158a6437a7e9a54f1bb8ed197b0854 Mon Sep 17 00:00:00 2001 From: Elizabeth Byerly Date: Wed, 29 May 2019 18:11:41 -0400 Subject: [PATCH 13/27] Crash behavior for paymentservice --- build.out | 2 +- src/loadgenerator/locustfile.py | 6 +++++- src/paymentservice/charge.js | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/build.out b/build.out index eefcc8a..50bf30d 100644 --- a/build.out +++ b/build.out @@ -1 +1 @@ -{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-33-g6e6db3b@sha256:593de0cc94b95fa033838a3d3f3dc0168cc35f736b01ace2954b3648771e1027"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-33-g6e6db3b@sha256:29dc89ac7aa66dcb70fd1c9e84f422a5e0c4bcb117ed0cb29c7cd6282ab13bbe"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-33-g6e6db3b@sha256:de6cddba59ea40a879baf25b2ae58dd06b64532d0ca52dda4c4b6d22e577f0d6"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-33-g6e6db3b@sha256:0ee734d45b10760c0d01bf3ca27a85b56296337adfe540f344860b2de1eb0277"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-33-g6e6db3b@sha256:d9b7a695508b8df8d894d4b1ea24ebc8f651c069daab64df4acb2556c72ace1d"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-33-g6e6db3b@sha256:93d422fe681b9ac2aed353b5b22f447dcd305bb297980edb0dfd68719e9dde65"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-33-g6e6db3b@sha256:5dd9f85c65b0ab000f759ea37d78ff06643ea800220e9e34c251f3c1e33ab2b9"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-33-g6e6db3b@sha256:6cc3baab0bdf2eda1ec9da076a102007c851a665c9fd8ee99d741c734c8a85fe"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-33-g6e6db3b@sha256:43d6cbbfb02cb9a4435063c63127f1f4e22a8954f38cc78159c1ae7e44700bdd"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-33-g6e6db3b@sha256:88ece337b51771e0a10cc09d8db31dd474d93fcbc47b145a9d9f6a27e24a5fb4"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-33-g6e6db3b@sha256:dcb2c1644648b9c18c6fc48ad7fc1a15f4dc890ad3fca531b9892d6cfdf1a305"}]} \ No newline at end of file +{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-43-ga32631d@sha256:593de0cc94b95fa033838a3d3f3dc0168cc35f736b01ace2954b3648771e1027"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-43-ga32631d@sha256:29dc89ac7aa66dcb70fd1c9e84f422a5e0c4bcb117ed0cb29c7cd6282ab13bbe"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-43-ga32631d@sha256:de6cddba59ea40a879baf25b2ae58dd06b64532d0ca52dda4c4b6d22e577f0d6"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-43-ga32631d@sha256:0ee734d45b10760c0d01bf3ca27a85b56296337adfe540f344860b2de1eb0277"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-43-ga32631d@sha256:d9b7a695508b8df8d894d4b1ea24ebc8f651c069daab64df4acb2556c72ace1d"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-43-ga32631d-dirty@sha256:4df214a8153671eef258d9329054f2fb21eb6331d2a4b475a731d115ec16e33c"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-43-ga32631d@sha256:7de984152d48e33d3b02f001dceb6d97f504478ac27c33dcaa27cb981c445e88"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-43-ga32631d@sha256:6cc3baab0bdf2eda1ec9da076a102007c851a665c9fd8ee99d741c734c8a85fe"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-43-ga32631d@sha256:43d6cbbfb02cb9a4435063c63127f1f4e22a8954f38cc78159c1ae7e44700bdd"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-43-ga32631d-dirty@sha256:15a1adb67f03da4ef24ced791737413db372fb8eccfcc9b8155b9e1205903a97"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-43-ga32631d@sha256:dcb2c1644648b9c18c6fc48ad7fc1a15f4dc890ad3fca531b9892d6cfdf1a305"}]} \ No newline at end of file diff --git a/src/loadgenerator/locustfile.py b/src/loadgenerator/locustfile.py index eb81322..2167799 100644 --- a/src/loadgenerator/locustfile.py +++ b/src/loadgenerator/locustfile.py @@ -59,6 +59,10 @@ def addToCart(l): def checkout(l): addToCart(l) + # For five minutes every other hour, credit cards passed by the user will be + # invalid and the paymentservice will fail. + now = time.localtime() + expiration_year = '2015' if (now.tm_hour % 2) & (now.tm_min < 5) else '2060' l.client.post("/cart/checkout", { 'email': 'someone@example.com', 'street_address': '1600 Amphitheatre Parkway', @@ -68,7 +72,7 @@ def checkout(l): 'country': 'United States', 'credit_card_number': '4432-8015-6152-0454', 'credit_card_expiration_month': '1', - 'credit_card_expiration_year': '2039', + 'credit_card_expiration_year': expiration_year, 'credit_card_cvv': '672', }) diff --git a/src/paymentservice/charge.js b/src/paymentservice/charge.js index ce9674a..fe7b9da 100644 --- a/src/paymentservice/charge.js +++ b/src/paymentservice/charge.js @@ -15,6 +15,7 @@ const cardValidator = require('simple-card-validator'); const uuid = require('uuid/v4'); const pino = require('pino'); +const grpc = require('grpc'); const logger = pino({ name: 'paymentservice-charge', @@ -28,6 +29,7 @@ class CreditCardError extends Error { constructor (message) { super(message); this.code = 400; // Invalid argument error + this.status = grpc.status.INVALID_ARGUMENT; } } From 0b5c802e660dc3d5e31274aa5b63a396776fda9b Mon Sep 17 00:00:00 2001 From: asamanta Date: Mon, 17 Jun 2019 15:06:57 -0400 Subject: [PATCH 14/27] add revision history --- kubernetes-manifests/adservice.yaml | 1 + kubernetes-manifests/cartservice.yaml | 1 + kubernetes-manifests/checkoutservice.yaml | 1 + kubernetes-manifests/currencyservice.yaml | 1 + kubernetes-manifests/emailservice.yaml | 1 + kubernetes-manifests/frontend.yaml | 1 + kubernetes-manifests/loadgenerator.yaml | 1 + kubernetes-manifests/paymentservice.yaml | 1 + kubernetes-manifests/productcatalogservice.yaml | 1 + kubernetes-manifests/recommendationservice.yaml | 1 + kubernetes-manifests/redis.yaml | 1 + kubernetes-manifests/shippingservice.yaml | 1 + 12 files changed, 12 insertions(+) diff --git a/kubernetes-manifests/adservice.yaml b/kubernetes-manifests/adservice.yaml index 47f14a6..2f5e67e 100644 --- a/kubernetes-manifests/adservice.yaml +++ b/kubernetes-manifests/adservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: adservice spec: + revisionHistoryLimit: 1 replicas: 5 selector: matchLabels: diff --git a/kubernetes-manifests/cartservice.yaml b/kubernetes-manifests/cartservice.yaml index fcfe0f5..e8a5a52 100644 --- a/kubernetes-manifests/cartservice.yaml +++ b/kubernetes-manifests/cartservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: cartservice spec: + revisionHistoryLimit: 1 selector: matchLabels: app: cartservice diff --git a/kubernetes-manifests/checkoutservice.yaml b/kubernetes-manifests/checkoutservice.yaml index 501210a..c5c5bde 100644 --- a/kubernetes-manifests/checkoutservice.yaml +++ b/kubernetes-manifests/checkoutservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: checkoutservice spec: + revisionHistoryLimit: 1 selector: matchLabels: app: checkoutservice diff --git a/kubernetes-manifests/currencyservice.yaml b/kubernetes-manifests/currencyservice.yaml index 6d1b21a..b185721 100644 --- a/kubernetes-manifests/currencyservice.yaml +++ b/kubernetes-manifests/currencyservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: currencyservice spec: + revisionHistoryLimit: 1 selector: matchLabels: app: currencyservice diff --git a/kubernetes-manifests/emailservice.yaml b/kubernetes-manifests/emailservice.yaml index 2ae3823..67c7010 100644 --- a/kubernetes-manifests/emailservice.yaml +++ b/kubernetes-manifests/emailservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: emailservice spec: + revisionHistoryLimit: 1 selector: matchLabels: app: emailservice diff --git a/kubernetes-manifests/frontend.yaml b/kubernetes-manifests/frontend.yaml index 4cea9bc..c72f63b 100644 --- a/kubernetes-manifests/frontend.yaml +++ b/kubernetes-manifests/frontend.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: frontend-a spec: + revisionHistoryLimit: 1 selector: matchLabels: app: frontend diff --git a/kubernetes-manifests/loadgenerator.yaml b/kubernetes-manifests/loadgenerator.yaml index 3385337..f08e649 100644 --- a/kubernetes-manifests/loadgenerator.yaml +++ b/kubernetes-manifests/loadgenerator.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: loadgenerator spec: + revisionHistoryLimit: 1 selector: matchLabels: app: loadgenerator diff --git a/kubernetes-manifests/paymentservice.yaml b/kubernetes-manifests/paymentservice.yaml index fa62c08..15685b2 100644 --- a/kubernetes-manifests/paymentservice.yaml +++ b/kubernetes-manifests/paymentservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: paymentservice spec: + revisionHistoryLimit: 1 selector: matchLabels: app: paymentservice diff --git a/kubernetes-manifests/productcatalogservice.yaml b/kubernetes-manifests/productcatalogservice.yaml index b175856..0f8fd37 100644 --- a/kubernetes-manifests/productcatalogservice.yaml +++ b/kubernetes-manifests/productcatalogservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: productcatalogservice spec: + revisionHistoryLimit: 1 selector: matchLabels: app: productcatalogservice diff --git a/kubernetes-manifests/recommendationservice.yaml b/kubernetes-manifests/recommendationservice.yaml index 9a5aee3..4d29cbc 100644 --- a/kubernetes-manifests/recommendationservice.yaml +++ b/kubernetes-manifests/recommendationservice.yaml @@ -99,6 +99,7 @@ spec: limits: cpu: 200m memory: 450Mi + revisionHistoryLimit: 1 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService diff --git a/kubernetes-manifests/redis.yaml b/kubernetes-manifests/redis.yaml index b67649b..bb0d2e4 100644 --- a/kubernetes-manifests/redis.yaml +++ b/kubernetes-manifests/redis.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: redis-cart spec: + revisionHistoryLimit: 1 selector: matchLabels: app: redis-cart diff --git a/kubernetes-manifests/shippingservice.yaml b/kubernetes-manifests/shippingservice.yaml index d4049ad..8b3b780 100644 --- a/kubernetes-manifests/shippingservice.yaml +++ b/kubernetes-manifests/shippingservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: shippingservice spec: + revisionHistoryLimit: 1 selector: matchLabels: app: shippingservice From 6c890dfe6743d63c247067f90a198887b2129577 Mon Sep 17 00:00:00 2001 From: asamanta Date: Tue, 18 Jun 2019 13:37:21 -0400 Subject: [PATCH 15/27] add revision history to missed deployments --- kubernetes-manifests/frontend.yaml | 1 + kubernetes-manifests/recommendationservice.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/kubernetes-manifests/frontend.yaml b/kubernetes-manifests/frontend.yaml index c72f63b..2662aa6 100644 --- a/kubernetes-manifests/frontend.yaml +++ b/kubernetes-manifests/frontend.yaml @@ -81,6 +81,7 @@ kind: Deployment metadata: name: frontend-b spec: + revisionHistoryLimit: 1 selector: matchLabels: app: frontend diff --git a/kubernetes-manifests/recommendationservice.yaml b/kubernetes-manifests/recommendationservice.yaml index 4d29cbc..8c49c84 100644 --- a/kubernetes-manifests/recommendationservice.yaml +++ b/kubernetes-manifests/recommendationservice.yaml @@ -17,6 +17,7 @@ kind: Deployment metadata: name: recommendationservice-v1 spec: + revisionHistoryLimit: 1 selector: matchLabels: app: recommendationservice From c10516afc482ca8522def49e347b814e11de5835 Mon Sep 17 00:00:00 2001 From: asamanta Date: Mon, 1 Jul 2019 13:44:25 -0400 Subject: [PATCH 16/27] adding a replica set owner to shipping service. This is just another workload of shipping service, but with no deployment, just a replica set. --- kubernetes-manifests/shippingservice.yaml | 42 +++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/kubernetes-manifests/shippingservice.yaml b/kubernetes-manifests/shippingservice.yaml index 8b3b780..01c403e 100644 --- a/kubernetes-manifests/shippingservice.yaml +++ b/kubernetes-manifests/shippingservice.yaml @@ -25,6 +25,7 @@ spec: metadata: labels: app: shippingservice + version: deployment spec: containers: - name: server @@ -52,6 +53,47 @@ spec: cpu: 200m memory: 128Mi --- +apiVersion: apps/v1 +kind: ReplicaSet +metadata: + name: shippingservice-rs +spec: + replicas: 2 + selector: + matchLabels: + app: shippingservice + owner: rs + template: + metadata: + labels: + app: shippingservice + owner: rs + spec: + containers: + - name: server + image: shippingservice + ports: + - containerPort: 50051 + env: + - name: PORT + value: "50051" + readinessProbe: + periodSeconds: 5 + exec: + command: ["/bin/grpc_health_probe", "-addr=:50051"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:50051"] + # env: + # - name: JAEGER_SERVICE_ADDR + # value: "jaeger-collector:14268" + resources: + requests: + cpu: 100m + memory: 64Mi + limits: + cpu: 200m +--- apiVersion: v1 kind: Service metadata: From cc5943cac968f3248609e608cad45661e096354d Mon Sep 17 00:00:00 2001 From: asamanta Date: Mon, 1 Jul 2019 14:46:13 -0400 Subject: [PATCH 17/27] Adding a cron job and a new workload for it. --- src/pingjob/Dockerfile | 18 ++++++++ src/pingjob/pinger.py | 86 ++++++++++++++++++++++++++++++++++++ src/pingjob/pinger.sh | 27 +++++++++++ src/pingjob/requirements.in | 1 + src/pingjob/requirements.txt | 11 +++++ 5 files changed, 143 insertions(+) create mode 100644 src/pingjob/Dockerfile create mode 100644 src/pingjob/pinger.py create mode 100755 src/pingjob/pinger.sh create mode 100644 src/pingjob/requirements.in create mode 100644 src/pingjob/requirements.txt diff --git a/src/pingjob/Dockerfile b/src/pingjob/Dockerfile new file mode 100644 index 0000000..4942b0e --- /dev/null +++ b/src/pingjob/Dockerfile @@ -0,0 +1,18 @@ +FROM python:3-slim as base + +FROM base as builder + +RUN apt-get -qq update \ + && apt-get install -y --no-install-recommends \ + g++ + +COPY requirements.txt . + +RUN pip install --install-option="--prefix=/install" -r requirements.txt + +FROM base +COPY --from=builder /install /usr/local + +COPY . . +ENTRYPOINT ["./pinger.sh"] + diff --git a/src/pingjob/pinger.py b/src/pingjob/pinger.py new file mode 100644 index 0000000..fb9b8e7 --- /dev/null +++ b/src/pingjob/pinger.py @@ -0,0 +1,86 @@ +#!/usr/bin/python +# +# 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. + +import random + +import requests +import sys + +BASE = sys.argv[1] + +products = [ + '0PUK6V6EV0', + '1YMWWN1N4O', + '2ZYFJ3GM2N', + '66VCHSJNUP', + '6E92ZMYYFZ', + '9SIQT8TOJO', + 'L9ECAV7KIM', + 'LS4PSXUNUM', + 'OLJCESPC7Z'] + + +def index(): + requests.get(BASE + "/") + + +def setCurrency(): + currencies = ['EUR', 'USD', 'JPY', 'CAD'] + requests.post(BASE + "/setCurrency", + {'currency_code': random.choice(currencies)}) + + +def browseProduct(): + requests.get(BASE + "/product/" + random.choice(products)) + + +def viewCart(): + requests.get(BASE + "/cart") + + +def addToCart(): + product = random.choice(products) + requests.get(BASE + "/product/" + product) + requests.post(BASE + "/cart", { + 'product_id': product, + 'quantity': random.choice([1, 2, 3, 4, 5, 10])}) + + +def checkout(): + addToCart() + requests.post(BASE + "/cart/checkout", { + 'email': 'someone@example.com', + 'street_address': '1600 Amphitheatre Parkway', + 'zip_code': '94043', + 'city': 'Mountain View', + 'state': 'CA', + 'country': 'United States', + 'credit_card_number': '4432-8015-6152-0454', + 'credit_card_expiration_month': '1', + 'credit_card_expiration_year': '2039', + 'credit_card_cvv': '672', + }) + + +if not BASE: + print("ERROR: no frontend address") +else: + print("pinging" + BASE) +index() +browseProduct() +addToCart() +viewCart() +checkout() diff --git a/src/pingjob/pinger.sh b/src/pingjob/pinger.sh new file mode 100755 index 0000000..9e799ae --- /dev/null +++ b/src/pingjob/pinger.sh @@ -0,0 +1,27 @@ +#!/bin/sh -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. + +#!/bin/bash +set -e +trap "exit" TERM + +if [ -z "${FRONTEND_ADDR}" ]; then + echo >&2 "FRONTEND_ADDR not specified" + exit 1 +fi + +set -x +python pinger.py "${FRONTEND_ADDR}" diff --git a/src/pingjob/requirements.in b/src/pingjob/requirements.in new file mode 100644 index 0000000..f229360 --- /dev/null +++ b/src/pingjob/requirements.in @@ -0,0 +1 @@ +requests diff --git a/src/pingjob/requirements.txt b/src/pingjob/requirements.txt new file mode 100644 index 0000000..59b8df2 --- /dev/null +++ b/src/pingjob/requirements.txt @@ -0,0 +1,11 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --output-file=requirements.txt requirements.in +# +certifi==2018.11.29 # via requests +chardet==3.0.4 # via requests +idna==2.8 # via requests +requests==2.21.0 +urllib3==1.24.1 # via requests From 6c11f132652aee3e87ef86dc07ef56f181f1b28c Mon Sep 17 00:00:00 2001 From: asamanta Date: Mon, 1 Jul 2019 14:55:34 -0400 Subject: [PATCH 18/27] add pinger.yaml which should set up the job --- kubernetes-manifests/pinger.yaml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 kubernetes-manifests/pinger.yaml diff --git a/kubernetes-manifests/pinger.yaml b/kubernetes-manifests/pinger.yaml new file mode 100644 index 0000000..e4e233c --- /dev/null +++ b/kubernetes-manifests/pinger.yaml @@ -0,0 +1,18 @@ +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: pinger-job +spec: + schedule: "*/5 * * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: main + image: pingjob + env: + - name: FRONTEND_ADDR + value: "frontend:80" + restartPolicy: OnFailure + From 60a1fc4ad54c9de62bda06f13a6e848ff252321a Mon Sep 17 00:00:00 2001 From: asamanta Date: Mon, 1 Jul 2019 15:20:37 -0400 Subject: [PATCH 19/27] updated build.out --- build.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.out b/build.out index eefcc8a..36fecc6 100644 --- a/build.out +++ b/build.out @@ -1 +1 @@ -{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-33-g6e6db3b@sha256:593de0cc94b95fa033838a3d3f3dc0168cc35f736b01ace2954b3648771e1027"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-33-g6e6db3b@sha256:29dc89ac7aa66dcb70fd1c9e84f422a5e0c4bcb117ed0cb29c7cd6282ab13bbe"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-33-g6e6db3b@sha256:de6cddba59ea40a879baf25b2ae58dd06b64532d0ca52dda4c4b6d22e577f0d6"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-33-g6e6db3b@sha256:0ee734d45b10760c0d01bf3ca27a85b56296337adfe540f344860b2de1eb0277"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-33-g6e6db3b@sha256:d9b7a695508b8df8d894d4b1ea24ebc8f651c069daab64df4acb2556c72ace1d"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-33-g6e6db3b@sha256:93d422fe681b9ac2aed353b5b22f447dcd305bb297980edb0dfd68719e9dde65"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-33-g6e6db3b@sha256:5dd9f85c65b0ab000f759ea37d78ff06643ea800220e9e34c251f3c1e33ab2b9"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-33-g6e6db3b@sha256:6cc3baab0bdf2eda1ec9da076a102007c851a665c9fd8ee99d741c734c8a85fe"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-33-g6e6db3b@sha256:43d6cbbfb02cb9a4435063c63127f1f4e22a8954f38cc78159c1ae7e44700bdd"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-33-g6e6db3b@sha256:88ece337b51771e0a10cc09d8db31dd474d93fcbc47b145a9d9f6a27e24a5fb4"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-33-g6e6db3b@sha256:dcb2c1644648b9c18c6fc48ad7fc1a15f4dc890ad3fca531b9892d6cfdf1a305"}]} \ No newline at end of file +{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-49-g6c11f13@sha256:b5642298862ce0852e6038cf029ed75df6a08530c3ca9b86cd2ad4b50d5cff00"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-49-g6c11f13@sha256:74288be0207731ee0f846273da3486638777cf8d4077bddd45e0aeac75bb3559"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-49-g6c11f13-dirty@sha256:761fcf9065618d1edf9739c5a99e0b85e85a00ea79831d9cd14ceef281bfcb96"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-49-g6c11f13@sha256:6625a1e45b63c32585248a51d32b1b5137c16c7fb0f622ee9efbd08ef0cfed42"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-49-g6c11f13@sha256:cab8d517f524609837c7c70d357d7ba4aeb836dc417414d726079ed811928804"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-49-g6c11f13@sha256:1d65c32c95fbf5fe7348e8d4975bf15a305279f78264f342734afc3d1273a7cb"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-49-g6c11f13@sha256:dcbf4a09a2b7961ad00496c70ebb33b125d40b3a2c28e92dc18e44ad15ff9139"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-49-g6c11f13@sha256:2d6b7b6422669a0850f3743c734d300cbcf247fe850127ea99f695e831e32374"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-49-g6c11f13@sha256:119a11554f457f3a4df05672de4f51050f305fba67482b242543ec6fb4ed1f05"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-49-g6c11f13@sha256:de90c5ce3bef7e118183a82b6a5de5f994045727b66462c2bffd4f57749f40c1"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-49-g6c11f13@sha256:39a383bafca249864cd67a8eac66e67a19dc107b46566d7e16501c4f15ee0935"}]} \ No newline at end of file From e1e15533767ba1d2e5354dc5b332800bb328be76 Mon Sep 17 00:00:00 2001 From: asamanta Date: Mon, 1 Jul 2019 16:46:31 -0400 Subject: [PATCH 20/27] fixed some bugs with the pinger job --- build.out | 2 +- kubernetes-manifests/pinger.yaml | 7 ++++++- skaffold.yaml | 2 ++ src/pingjob/pinger.py | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/build.out b/build.out index 36fecc6..c02c410 100644 --- a/build.out +++ b/build.out @@ -1 +1 @@ -{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-49-g6c11f13@sha256:b5642298862ce0852e6038cf029ed75df6a08530c3ca9b86cd2ad4b50d5cff00"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-49-g6c11f13@sha256:74288be0207731ee0f846273da3486638777cf8d4077bddd45e0aeac75bb3559"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-49-g6c11f13-dirty@sha256:761fcf9065618d1edf9739c5a99e0b85e85a00ea79831d9cd14ceef281bfcb96"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-49-g6c11f13@sha256:6625a1e45b63c32585248a51d32b1b5137c16c7fb0f622ee9efbd08ef0cfed42"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-49-g6c11f13@sha256:cab8d517f524609837c7c70d357d7ba4aeb836dc417414d726079ed811928804"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-49-g6c11f13@sha256:1d65c32c95fbf5fe7348e8d4975bf15a305279f78264f342734afc3d1273a7cb"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-49-g6c11f13@sha256:dcbf4a09a2b7961ad00496c70ebb33b125d40b3a2c28e92dc18e44ad15ff9139"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-49-g6c11f13@sha256:2d6b7b6422669a0850f3743c734d300cbcf247fe850127ea99f695e831e32374"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-49-g6c11f13@sha256:119a11554f457f3a4df05672de4f51050f305fba67482b242543ec6fb4ed1f05"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-49-g6c11f13@sha256:de90c5ce3bef7e118183a82b6a5de5f994045727b66462c2bffd4f57749f40c1"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-49-g6c11f13@sha256:39a383bafca249864cd67a8eac66e67a19dc107b46566d7e16501c4f15ee0935"}]} \ No newline at end of file +{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-50-g60a1fc4@sha256:b5642298862ce0852e6038cf029ed75df6a08530c3ca9b86cd2ad4b50d5cff00"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-50-g60a1fc4@sha256:74288be0207731ee0f846273da3486638777cf8d4077bddd45e0aeac75bb3559"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-50-g60a1fc4-dirty@sha256:761fcf9065618d1edf9739c5a99e0b85e85a00ea79831d9cd14ceef281bfcb96"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-50-g60a1fc4@sha256:6625a1e45b63c32585248a51d32b1b5137c16c7fb0f622ee9efbd08ef0cfed42"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-50-g60a1fc4@sha256:cab8d517f524609837c7c70d357d7ba4aeb836dc417414d726079ed811928804"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-50-g60a1fc4@sha256:1d65c32c95fbf5fe7348e8d4975bf15a305279f78264f342734afc3d1273a7cb"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-50-g60a1fc4@sha256:dcbf4a09a2b7961ad00496c70ebb33b125d40b3a2c28e92dc18e44ad15ff9139"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-50-g60a1fc4@sha256:2d6b7b6422669a0850f3743c734d300cbcf247fe850127ea99f695e831e32374"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-50-g60a1fc4@sha256:119a11554f457f3a4df05672de4f51050f305fba67482b242543ec6fb4ed1f05"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-50-g60a1fc4@sha256:de90c5ce3bef7e118183a82b6a5de5f994045727b66462c2bffd4f57749f40c1"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-50-g60a1fc4@sha256:39a383bafca249864cd67a8eac66e67a19dc107b46566d7e16501c4f15ee0935"},{"imageName":"gcr.io/lesser-weevil/pingjob","tag":"gcr.io/lesser-weevil/pingjob:v0.1.0-50-g60a1fc4-dirty@sha256:708fc0f27f2c950c9f5a3478c1b7d4d32b82165f5b323acca9b53abba8409ca5"}]} \ No newline at end of file diff --git a/kubernetes-manifests/pinger.yaml b/kubernetes-manifests/pinger.yaml index e4e233c..a9c56c4 100644 --- a/kubernetes-manifests/pinger.yaml +++ b/kubernetes-manifests/pinger.yaml @@ -13,6 +13,11 @@ spec: image: pingjob env: - name: FRONTEND_ADDR - value: "frontend:80" + value: "http://35.202.74.89" restartPolicy: OnFailure + metadata: + labels: + custom-job: pinger + + diff --git a/skaffold.yaml b/skaffold.yaml index 665f80a..682957d 100644 --- a/skaffold.yaml +++ b/skaffold.yaml @@ -42,6 +42,8 @@ build: context: src/loadgenerator - image: adservice context: src/adservice + - image: pingjob + context: src/pingjob tagPolicy: gitCommit: {} deploy: diff --git a/src/pingjob/pinger.py b/src/pingjob/pinger.py index fb9b8e7..915ae85 100644 --- a/src/pingjob/pinger.py +++ b/src/pingjob/pinger.py @@ -84,3 +84,4 @@ browseProduct() addToCart() viewCart() checkout() +print("pinging complete") From f6933f3ebcbe79dc3aa02517a4c14154c464c201 Mon Sep 17 00:00:00 2001 From: asamanta Date: Tue, 9 Jul 2019 17:53:06 -0400 Subject: [PATCH 21/27] Updated cartservice.yaml to have more replicas and more memory --- kubernetes-manifests/cartservice.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kubernetes-manifests/cartservice.yaml b/kubernetes-manifests/cartservice.yaml index e8a5a52..0f2e711 100644 --- a/kubernetes-manifests/cartservice.yaml +++ b/kubernetes-manifests/cartservice.yaml @@ -18,6 +18,7 @@ metadata: name: cartservice spec: revisionHistoryLimit: 1 + replicas: 10 selector: matchLabels: app: cartservice @@ -42,10 +43,10 @@ spec: resources: requests: cpu: 200m - memory: 64Mi + memory: 128Mi limits: cpu: 300m - memory: 128Mi + memory: 256Mi readinessProbe: initialDelaySeconds: 15 exec: From b2edfb38d6688f1b7a53426e356d228dce5c4d66 Mon Sep 17 00:00:00 2001 From: asamanta Date: Mon, 29 Jul 2019 12:22:05 -0400 Subject: [PATCH 22/27] add k8s service for recommendation service so Istio is happy --- kubernetes-manifests/recommendationservice.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/kubernetes-manifests/recommendationservice.yaml b/kubernetes-manifests/recommendationservice.yaml index 8c49c84..9d120aa 100644 --- a/kubernetes-manifests/recommendationservice.yaml +++ b/kubernetes-manifests/recommendationservice.yaml @@ -102,6 +102,19 @@ spec: memory: 450Mi revisionHistoryLimit: 1 --- +apiVersion: v1 +kind: Service +metadata: + name: recommendationservice +spec: + type: ClusterIP + selector: + app: recommendationservice + ports: + - name: grpc + port: 8080 + targetPort: 8080 +--- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: From 3964ccb80a025b85f366b5d07ccc6ea7fae9b167 Mon Sep 17 00:00:00 2001 From: Morgan McLean Date: Wed, 31 Jul 2019 13:28:58 -0700 Subject: [PATCH 23/27] Enabled Profiler by default on the email service --- src/emailservice/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/emailservice/Dockerfile b/src/emailservice/Dockerfile index 3d649a5..b56a11d 100644 --- a/src/emailservice/Dockerfile +++ b/src/emailservice/Dockerfile @@ -14,6 +14,8 @@ RUN pip install -r requirements.txt FROM base as final # Enable unbuffered logging ENV PYTHONUNBUFFERED=1 +# Enable Profiler +ENV ENABLE_PROFILER=1 RUN apt-get -qq update \ && apt-get install -y --no-install-recommends \ From c11838fba362855e17127ab7d98992e61d5dea51 Mon Sep 17 00:00:00 2001 From: asamanta Date: Fri, 2 Aug 2019 14:19:03 -0400 Subject: [PATCH 24/27] add file level comment --- kubernetes-manifests/recommendationservice.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kubernetes-manifests/recommendationservice.yaml b/kubernetes-manifests/recommendationservice.yaml index 9d120aa..c4b554e 100644 --- a/kubernetes-manifests/recommendationservice.yaml +++ b/kubernetes-manifests/recommendationservice.yaml @@ -102,6 +102,8 @@ spec: memory: 450Mi revisionHistoryLimit: 1 --- +#In order for istio to route traffic correctly, it needs a kubernetes service to route traffic to +#the workloads in question. apiVersion: v1 kind: Service metadata: From 9108433c97f1628248a5f858e34ec2cba948dd40 Mon Sep 17 00:00:00 2001 From: David Souther Date: Mon, 5 Aug 2019 15:31:45 -0400 Subject: [PATCH 25/27] Update build.out --- build.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.out b/build.out index bab023b..5a6bd63 100644 --- a/build.out +++ b/build.out @@ -1 +1 @@ -{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-53-g334f50b@sha256:b5642298862ce0852e6038cf029ed75df6a08530c3ca9b86cd2ad4b50d5cff00"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-53-g334f50b@sha256:74288be0207731ee0f846273da3486638777cf8d4077bddd45e0aeac75bb3559"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-53-g334f50b-dirty@sha256:761fcf9065618d1edf9739c5a99e0b85e85a00ea79831d9cd14ceef281bfcb96"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-53-g334f50b@sha256:6625a1e45b63c32585248a51d32b1b5137c16c7fb0f622ee9efbd08ef0cfed42"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-53-g334f50b@sha256:cab8d517f524609837c7c70d357d7ba4aeb836dc417414d726079ed811928804"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-53-g334f50b@sha256:1d65c32c95fbf5fe7348e8d4975bf15a305279f78264f342734afc3d1273a7cb"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-53-g334f50b@sha256:dcbf4a09a2b7961ad00496c70ebb33b125d40b3a2c28e92dc18e44ad15ff9139"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-53-g334f50b@sha256:2d6b7b6422669a0850f3743c734d300cbcf247fe850127ea99f695e831e32374"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-53-g334f50b@sha256:119a11554f457f3a4df05672de4f51050f305fba67482b242543ec6fb4ed1f05"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-53-g334f50b@sha256:de90c5ce3bef7e118183a82b6a5de5f994045727b66462c2bffd4f57749f40c1"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-53-g334f50b@sha256:39a383bafca249864cd67a8eac66e67a19dc107b46566d7e16501c4f15ee0935"},{"imageName":"gcr.io/lesser-weevil/pingjob","tag":"gcr.io/lesser-weevil/pingjob:v0.1.0-53-g334f50b-dirty@sha256:e55b195ae794a48ec045ee4652dc5feb40166c99edb58f78b7e4e59e572979af"}]} \ No newline at end of file +{"builds":[{"imageName":"gcr.io/lesser-weevil/emailservice","tag":"gcr.io/lesser-weevil/emailservice:v0.1.0-74-g468e8dc@sha256:7256c7e27888c37e06c19036032b594c5240d9a80bbe54963fda437346239742"},{"imageName":"gcr.io/lesser-weevil/productcatalogservice","tag":"gcr.io/lesser-weevil/productcatalogservice:v0.1.0-74-g468e8dc@sha256:19b199f0a976a3cebd5cf00d99d040a82c9824506de988d9485fffa828428898"},{"imageName":"gcr.io/lesser-weevil/recommendationservice","tag":"gcr.io/lesser-weevil/recommendationservice:v0.1.0-74-g468e8dc@sha256:3300a437de46c8d2e2144540ce0fe51ec2ea7b728c724021182337fd051bacad"},{"imageName":"gcr.io/lesser-weevil/shippingservice","tag":"gcr.io/lesser-weevil/shippingservice:v0.1.0-74-g468e8dc@sha256:dd8c49052601f9e3873d0c8034e6010645d83768df3526ee99cb43a71ce8344d"},{"imageName":"gcr.io/lesser-weevil/checkoutservice","tag":"gcr.io/lesser-weevil/checkoutservice:v0.1.0-74-g468e8dc@sha256:0955d209db61815892477b6f06b0f7a4c3c3d96e714c8c472faa5a442a2af875"},{"imageName":"gcr.io/lesser-weevil/paymentservice","tag":"gcr.io/lesser-weevil/paymentservice:v0.1.0-74-g468e8dc@sha256:07903a2bddf38920a940a2ab9aaddfbc7c06b0aa27dc07aaf8b9694722b44d92"},{"imageName":"gcr.io/lesser-weevil/currencyservice","tag":"gcr.io/lesser-weevil/currencyservice:v0.1.0-74-g468e8dc@sha256:df6b933e6b42a27035419119f93b471e4f9973b2934c0124da399c64dfc779a9"},{"imageName":"gcr.io/lesser-weevil/cartservice","tag":"gcr.io/lesser-weevil/cartservice:v0.1.0-74-g468e8dc@sha256:538f48876ad2f13603b4992bb3b75cde587333920f0a9f7e4d6d54924d349d3b"},{"imageName":"gcr.io/lesser-weevil/frontend","tag":"gcr.io/lesser-weevil/frontend:v0.1.0-74-g468e8dc@sha256:8b552b7de8dd9c45439d4a334f9d8dfeec0b989075a85e11cb17a81f2e47bab5"},{"imageName":"gcr.io/lesser-weevil/loadgenerator","tag":"gcr.io/lesser-weevil/loadgenerator:v0.1.0-74-g468e8dc@sha256:e874a37782981f587238a8b5ce807f7ce65d4c2f97c6bb847462de5a1aeb74c0"},{"imageName":"gcr.io/lesser-weevil/adservice","tag":"gcr.io/lesser-weevil/adservice:v0.1.0-74-g468e8dc@sha256:446a5743ebf2b7f27758c9d7588742223a42328838e7de222363f170d30e6231"},{"imageName":"gcr.io/lesser-weevil/pingjob","tag":"gcr.io/lesser-weevil/pingjob:v0.1.0-74-g468e8dc@sha256:0ade87236d2d837ca1d9b468497b7d05d729b6420120da35b8a9e64b20ce10a8"}]} \ No newline at end of file From ac9efe73e48f169d2e7a0c58aad139909565d453 Mon Sep 17 00:00:00 2001 From: asamanta Date: Thu, 15 Aug 2019 14:49:28 -0400 Subject: [PATCH 26/27] remove the job from the cluster --- kubernetes-manifests/pinger.yaml | 23 ----------------------- skaffold.yaml | 2 -- 2 files changed, 25 deletions(-) delete mode 100644 kubernetes-manifests/pinger.yaml diff --git a/kubernetes-manifests/pinger.yaml b/kubernetes-manifests/pinger.yaml deleted file mode 100644 index a9c56c4..0000000 --- a/kubernetes-manifests/pinger.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: batch/v1beta1 -kind: CronJob -metadata: - name: pinger-job -spec: - schedule: "*/5 * * * *" - jobTemplate: - spec: - template: - spec: - containers: - - name: main - image: pingjob - env: - - name: FRONTEND_ADDR - value: "http://35.202.74.89" - restartPolicy: OnFailure - metadata: - labels: - custom-job: pinger - - - diff --git a/skaffold.yaml b/skaffold.yaml index 682957d..665f80a 100644 --- a/skaffold.yaml +++ b/skaffold.yaml @@ -42,8 +42,6 @@ build: context: src/loadgenerator - image: adservice context: src/adservice - - image: pingjob - context: src/pingjob tagPolicy: gitCommit: {} deploy: From 47d1b8340ac3841cbc5657d398d851de762f2c94 Mon Sep 17 00:00:00 2001 From: asamanta Date: Tue, 10 Sep 2019 16:43:25 -0400 Subject: [PATCH 27/27] add autoscaler for currencyservice --- kubernetes-manifests/currencyservice.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/kubernetes-manifests/currencyservice.yaml b/kubernetes-manifests/currencyservice.yaml index b185721..f2213bd 100644 --- a/kubernetes-manifests/currencyservice.yaml +++ b/kubernetes-manifests/currencyservice.yaml @@ -62,3 +62,22 @@ spec: - name: grpc port: 7000 targetPort: 7000 +--- +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: currencyservice + labels: + app: currencyservice +spec: + maxReplicas: 7 + minReplicas: 1 + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: currencyservice + metrics: + - type: Resource + resource: + name: cpu + targetAverageUtilization: 19