Skip to content

Commit 19556d2

Browse files
authored
metrics: add documentation for updating Cloud Run (#3779)
* chore: add .gitignore with metrics-processor-service-key.json * metrics(process-cloudflare): add update instructions * metrics(summaries): add update instructions * metrics(index-generator): add update instructions * chore: remove copy from secrets/build/infra * metrics: remove .gitignore * metrics: remove metrics-processor-service-key.json from client params * metrics: remove step for copying credentials file * metrics: attach service account in gcloud run deploy command * metrics: remove Storage Legacy Bucket Writer permission * metrics: sort roles whose permissions are required * metrics: provide correct service-account details * chore: move region after at the end of gcloud run deploy Since the region is generic, and can be set as default in gcloud CLI
1 parent 791be98 commit 19556d2

6 files changed

Lines changed: 100 additions & 12 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# index-generator
2+
3+
## Prerequisites
4+
5+
- Ensure that you have following roles on GCP:
6+
- `Cloud Run Developer`
7+
- `Service Account User`
8+
- `Storage Object User`
9+
- Example request: [nodejs/build#3774][cloud-run-roles-request]
10+
- Install [Node.js][install-nodejs].
11+
- Install [gcloud CLI][install-gcloud-cli].
12+
- Authenticate using [`gcloud auth`][gcloud-auth].
13+
- Install [Docker Desktop][install-docker-desktop].
14+
- Authenticate using [`gcloud auth configure-docker`][gcloud-auth-docker].
15+
16+
## Setup
17+
18+
- Build Dockerfile
19+
- `docker buildx build --platform linux/amd64 -t gcr.io/nodejs-org/index-generator:latest .`
20+
- Push Docker image to GCR
21+
- `docker push gcr.io/nodejs-org/index-generator:latest`
22+
- Deploy Cloud Run service
23+
- `gcloud run deploy index-generator --image gcr.io/nodejs-org/index-generator:latest --service-account metrics-processor@nodejs-org.iam.gserviceaccount.com --no-allow-unauthenticated --region us-central1`
24+
- If traffic is not routed to the new revision, update the service to send all traffic to the new revision
25+
- `gcloud run services update-traffic index-generator --to-latest --region us-central1`
26+
27+
[cloud-run-roles-request]: https://github.com/nodejs/build/issues/3774
28+
[gcloud-auth]: https://cloud.google.com/sdk/gcloud/reference/auth
29+
[gcloud-auth-docker]: https://cloud.google.com/sdk/gcloud/reference/auth/configure-docker
30+
[install-docker-desktop]: https://www.docker.com/products/docker-desktop
31+
[install-gcloud-cli]: https://cloud.google.com/sdk/docs/install
32+
[install-nodejs]: https://nodejs.org/en/learn/getting-started/how-to-install-nodejs

ansible/roles/metrics/files/index-generator/index-generator.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
const { Storage } = require('@google-cloud/storage')
2-
const storage = new Storage({
3-
keyFilename: "metrics-processor-service-key.json",
4-
});
2+
const storage = new Storage();
53
const express = require('express')
64
const app = express()
75
app.use(express.json())
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# process-cloudflare
2+
3+
## Prerequisites
4+
5+
- Ensure that you have following roles on GCP:
6+
- `Cloud Run Developer`
7+
- `Service Account User`
8+
- `Storage Object User`
9+
- Example request: [nodejs/build#3774][cloud-run-roles-request]
10+
- Install [Node.js][install-nodejs].
11+
- Install [gcloud CLI][install-gcloud-cli].
12+
- Authenticate using [`gcloud auth`][gcloud-auth].
13+
- Install [Docker Desktop][install-docker-desktop].
14+
- Authenticate using [`gcloud auth configure-docker`][gcloud-auth-docker].
15+
16+
## Setup
17+
18+
- Build Dockerfile
19+
- `docker buildx build --platform linux/amd64 -t gcr.io/nodejs-org/processcloudflare:latest .`
20+
- Push Docker image to GCR
21+
- `docker push gcr.io/nodejs-org/processcloudflare:latest`
22+
- Deploy Cloud Run service
23+
- `gcloud run deploy processlogs --image gcr.io/nodejs-org/processcloudflare:latest --service-account metrics-processor@nodejs-org.iam.gserviceaccount.com --no-allow-unauthenticated --region us-central1`
24+
- If traffic is not routed to the new revision, update the service to send all traffic to the new revision
25+
- `gcloud run services update-traffic processlogs --to-latest --region us-central1`
26+
27+
[cloud-run-roles-request]: https://github.com/nodejs/build/issues/3774
28+
[gcloud-auth]: https://cloud.google.com/sdk/gcloud/reference/auth
29+
[gcloud-auth-docker]: https://cloud.google.com/sdk/gcloud/reference/auth/configure-docker
30+
[install-docker-desktop]: https://www.docker.com/products/docker-desktop
31+
[install-gcloud-cli]: https://cloud.google.com/sdk/docs/install
32+
[install-nodejs]: https://nodejs.org/en/learn/getting-started/how-to-install-nodejs

ansible/roles/metrics/files/process-cloudflare/process-cloudflare.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,7 @@ async function processLogs (bucket, filename) {
141141
}
142142

143143
async function createPipeline (bucket, filename, processedFile) {
144-
const storage = new Storage({
145-
keyFilename: 'metrics-processor-service-key.json'
146-
})
144+
const storage = new Storage()
147145
console.log('INSIDE CREATE PIPELINE')
148146

149147
const readBucket = storage.bucket(bucket)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# summaries
2+
3+
## Prerequisites
4+
5+
- Ensure that you have following roles on GCP:
6+
- `Cloud Run Developer`
7+
- `Service Account User`
8+
- `Storage Object User`
9+
- Example request: [nodejs/build#3774][cloud-run-roles-request]
10+
- Install [Node.js][install-nodejs].
11+
- Install [gcloud CLI][install-gcloud-cli].
12+
- Authenticate using [`gcloud auth`][gcloud-auth].
13+
- Install [Docker Desktop][install-docker-desktop].
14+
- Authenticate using [`gcloud auth configure-docker`][gcloud-auth-docker].
15+
16+
## Setup
17+
18+
- Build Dockerfile
19+
- `docker buildx build --platform linux/amd64 -t gcr.io/nodejs-org/producesummaries:latest .`
20+
- Push Docker image to GCR
21+
- `docker push gcr.io/nodejs-org/producesummaries:latest`
22+
- Deploy Cloud Run service
23+
- `gcloud run deploy produce-summaries --image gcr.io/nodejs-org/producesummaries:latest --service-account metrics-processor@nodejs-org.iam.gserviceaccount.com --no-allow-unauthenticated --region us-central1`
24+
- If traffic is not routed to the new revision, update the service to send all traffic to the new revision
25+
- `gcloud run services update-traffic produce-summaries --to-latest --region us-central1`
26+
27+
[cloud-run-roles-request]: https://github.com/nodejs/build/issues/3774
28+
[gcloud-auth]: https://cloud.google.com/sdk/gcloud/reference/auth
29+
[gcloud-auth-docker]: https://cloud.google.com/sdk/gcloud/reference/auth/configure-docker
30+
[install-docker-desktop]: https://www.docker.com/products/docker-desktop
31+
[install-gcloud-cli]: https://cloud.google.com/sdk/docs/install
32+
[install-nodejs]: https://nodejs.org/en/learn/getting-started/how-to-install-nodejs

ansible/roles/metrics/files/summaries/summaries.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,7 @@ function summary (chunk) {
6464
}
6565

6666
async function collectData (date) {
67-
const storage = new Storage({
68-
keyFilename: "metrics-processor-service-key.json",
69-
})
67+
const storage = new Storage()
7068
const filePrefix = date.toString().concat('/')
7169
console.log(filePrefix)
7270
const [files] = await storage.bucket('processed-logs-nodejs').getFiles({ prefix: `${filePrefix}`})
@@ -84,9 +82,7 @@ async function collectData (date) {
8482
}
8583

8684
async function produceSummaries (date) {
87-
const storage = new Storage({
88-
keyFilename: "metrics-processor-service-key.json",
89-
})
85+
const storage = new Storage()
9086
await collectData(date)
9187
prepare()
9288

0 commit comments

Comments
 (0)