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