Skip to content

Commit 2e796c9

Browse files
authored
Turn off GCP integrations by default (GoogleCloudPlatform#665)
* Turn off GCP integrations by default * Add doc * cleanup
1 parent 92d8f49 commit 2e796c9

12 files changed

+109
-53
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ gcloud container clusters delete onlineboutique \
130130

131131
## Other Deployment Options
132132

133+
- **Google Cloud Operations** (Monitoring, Tracing, Debugger, Profiler): [See these instructions](docs/gcp-instrumentation.md).
133134
- **Workload Identity**: [See these instructions.](docs/workload-identity.md)
134135
- **Istio**: [See these instructions.](docs/service-mesh.md)
135136
- **Anthos Service Mesh**: ASM requires Workload Identity to be enabled in your GKE cluster. [See the workload identity instructions](docs/workload-identity.md) to configure and deploy the app. Then, use the [service mesh guide](/docs/service-mesh.md).

docs/gcp-instrumentation.md

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Integrating Online Boutique with Google Cloud
2+
3+
By default, [Google Cloud Operations](https://cloud.google.com/products/operations) instrumentation is **turned off** for Online Boutique deployments. This includes Monitoring (Stats), Tracing, Profiler, and Debugger. This means that even if you're running this app on [GKE](https://cloud.google.com/kubernetes-engine), traces (for example) will not be exported to [Google Cloud Trace](https://cloud.google.com/trace).
4+
5+
You can see the instrumentation status in your deployment by opening one of the Deployment YAML files and seeing:
6+
7+
```YAML
8+
- name: DISABLE_STATS
9+
value: "1"
10+
- name: DISABLE_TRACING
11+
value: "1"
12+
- name: DISABLE_PROFILER
13+
value: "1"
14+
```
15+
16+
If you **are** running this app on GKE, and want to re-enable Google Cloud Operations instrumentation, set one or more of the `DISABLE_STATS`, `DISABLE_TRACING`, etc. fields to `0`. This re-enables the integrations. You can re-enable some or all of these integrations, for some or all Online Boutique services. Note that you will accumulate Google Cloud Operations [billing](https://cloud.google.com/stackdriver/pricing) if you re-enable these fields.
17+
18+
```YAML
19+
- name: DISABLE_STATS
20+
value: "0"
21+
- name: DISABLE_TRACING
22+
value: "0"
23+
- name: DISABLE_PROFILER
24+
value: "0"
25+
```

kubernetes-manifests/adservice.yaml

+4-4
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ spec:
3535
env:
3636
- name: PORT
3737
value: "9555"
38-
# - name: DISABLE_STATS
39-
# value: "1"
40-
# - name: DISABLE_TRACING
41-
# value: "1"
38+
- name: DISABLE_STATS
39+
value: "1"
40+
- name: DISABLE_TRACING
41+
value: "1"
4242
# - name: JAEGER_SERVICE_ADDR
4343
# value: "jaeger-collector:14268"
4444
resources:

kubernetes-manifests/checkoutservice.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ spec:
5252
value: "currencyservice:7000"
5353
- name: CART_SERVICE_ADDR
5454
value: "cartservice:7070"
55-
# - name: DISABLE_STATS
56-
# value: "1"
57-
# - name: DISABLE_TRACING
58-
# value: "1"
59-
# - name: DISABLE_PROFILER
60-
# value: "1"
55+
- name: DISABLE_STATS
56+
value: "1"
57+
- name: DISABLE_TRACING
58+
value: "1"
59+
- name: DISABLE_PROFILER
60+
value: "1"
6161
# - name: JAEGER_SERVICE_ADDR
6262
# value: "jaeger-collector:14268"
6363
resources:

kubernetes-manifests/currencyservice.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ spec:
3636
env:
3737
- name: PORT
3838
value: "7000"
39-
# - name: DISABLE_TRACING
40-
# value: "1"
41-
# - name: DISABLE_PROFILER
42-
# value: "1"
43-
# - name: DISABLE_DEBUGGER
44-
# value: "1"
39+
- name: DISABLE_TRACING
40+
value: "1"
41+
- name: DISABLE_PROFILER
42+
value: "1"
43+
- name: DISABLE_DEBUGGER
44+
value: "1"
4545
readinessProbe:
4646
exec:
4747
command: ["/bin/grpc_health_probe", "-addr=:7000"]

kubernetes-manifests/emailservice.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ spec:
3535
env:
3636
- name: PORT
3737
value: "8080"
38-
# - name: DISABLE_TRACING
39-
# value: "1"
38+
- name: DISABLE_TRACING
39+
value: "1"
4040
- name: DISABLE_PROFILER
4141
value: "1"
4242
readinessProbe:

kubernetes-manifests/frontend.yaml

+4-4
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ spec:
7070
# # When not set, defaults to "local" unless running in GKE, otherwies auto-sets to gcp
7171
# - name: ENV_PLATFORM
7272
# value: "aws"
73-
# - name: DISABLE_TRACING
74-
# value: "1"
75-
# - name: DISABLE_PROFILER
76-
# value: "1"
73+
- name: DISABLE_TRACING
74+
value: "1"
75+
- name: DISABLE_PROFILER
76+
value: "1"
7777
# - name: JAEGER_SERVICE_ADDR
7878
# value: "jaeger-collector:14268"
7979
# - name: CYMBAL_BRANDING

kubernetes-manifests/paymentservice.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ spec:
3535
env:
3636
- name: PORT
3737
value: "50051"
38+
- name: DISABLE_TRACING
39+
value: "1"
40+
- name: DISABLE_PROFILER
41+
value: "1"
42+
- name: DISABLE_DEBUGGER
43+
value: "1"
3844
readinessProbe:
3945
exec:
4046
command: ["/bin/grpc_health_probe", "-addr=:50051"]

kubernetes-manifests/productcatalogservice.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ spec:
3535
env:
3636
- name: PORT
3737
value: "3550"
38-
# - name: DISABLE_STATS
39-
# value: "1"
40-
# - name: DISABLE_TRACING
41-
# value: "1"
42-
# - name: DISABLE_PROFILER
43-
# value: "1"
38+
- name: DISABLE_STATS
39+
value: "1"
40+
- name: DISABLE_TRACING
41+
value: "1"
42+
- name: DISABLE_PROFILER
43+
value: "1"
4444
# - name: JAEGER_SERVICE_ADDR
4545
# value: "jaeger-collector:14268"
4646
readinessProbe:

kubernetes-manifests/recommendationservice.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@ spec:
4545
value: "8080"
4646
- name: PRODUCT_CATALOG_SERVICE_ADDR
4747
value: "productcatalogservice:3550"
48-
# - name: DISABLE_TRACING
49-
# value: "1"
50-
# - name: DISABLE_PROFILER
51-
# value: "1"
52-
# - name: DISABLE_DEBUGGER
53-
# value: "1"
48+
- name: DISABLE_TRACING
49+
value: "1"
50+
- name: DISABLE_PROFILER
51+
value: "1"
52+
- name: DISABLE_DEBUGGER
53+
value: "1"
5454
resources:
5555
requests:
5656
cpu: 100m

kubernetes-manifests/shippingservice.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ spec:
3434
env:
3535
- name: PORT
3636
value: "50051"
37-
# - name: DISABLE_STATS
38-
# value: "1"
39-
# - name: DISABLE_TRACING
40-
# value: "1"
41-
# - name: DISABLE_PROFILER
42-
# value: "1"
37+
- name: DISABLE_STATS
38+
value: "1"
39+
- name: DISABLE_TRACING
40+
value: "1"
41+
- name: DISABLE_PROFILER
42+
value: "1"
4343
# - name: JAEGER_SERVICE_ADDR
4444
# value: "jaeger-collector:14268"
4545
readinessProbe:

src/paymentservice/index.js

+37-13
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,43 @@
1616

1717
'use strict';
1818

19-
require('@google-cloud/profiler').start({
20-
serviceContext: {
21-
service: 'paymentservice',
22-
version: '1.0.0'
23-
}
24-
});
25-
require('@google-cloud/trace-agent').start();
26-
require('@google-cloud/debug-agent').start({
27-
serviceContext: {
28-
service: 'paymentservice',
29-
version: 'VERSION'
30-
}
31-
});
19+
20+
if(process.env.DISABLE_PROFILER) {
21+
console.log("Profiler disabled.")
22+
}
23+
else {
24+
console.log("Profiler enabled.")
25+
require('@google-cloud/profiler').start({
26+
serviceContext: {
27+
service: 'paymentservice',
28+
version: '1.0.0'
29+
}
30+
});
31+
}
32+
33+
34+
if(process.env.DISABLE_TRACING) {
35+
console.log("Tracing disabled.")
36+
}
37+
else {
38+
console.log("Tracing enabled.")
39+
require('@google-cloud/trace-agent').start();
40+
41+
}
42+
43+
if(process.env.DISABLE_DEBUGGER) {
44+
console.log("Debugger disabled.")
45+
}
46+
else {
47+
console.log("Debugger enabled.")
48+
require('@google-cloud/debug-agent').start({
49+
serviceContext: {
50+
service: 'paymentservice',
51+
version: 'VERSION'
52+
}
53+
});
54+
}
55+
3256

3357
const path = require('path');
3458
const HipsterShopServer = require('./server');

0 commit comments

Comments
 (0)