Skip to content

Commit e9bb56b

Browse files
Make rate limiter parameters configurable via CB (#217)
* Add two more variable replacements in cloudbuild.yaml * Add vars to app.yaml
1 parent 7fb44a1 commit e9bb56b

File tree

3 files changed

+56
-48
lines changed

3 files changed

+56
-48
lines changed

cloudbuild/app.yaml.mlab-ns.template

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,7 @@ env_variables:
3838
MAXMIND_URL: gs://downloader-{{PLATFORM_PROJECT}}/Maxmind/current/GeoLite2-City.tar.gz
3939
REDIS_ADDRESS: {{REDIS_ADDRESS}}
4040
RATE_LIMIT_REDIS_ADDRESS: {{RATE_LIMIT_REDIS_ADDRESS}}
41+
RATE_LIMIT_INTERVAL: {{RATE_LIMIT_INTERVAL}}
42+
RATE_LIMIT_MAX: {{RATE_LIMIT_MAX}}
4143
PROMETHEUSX_LISTEN_ADDRESS: ':9090' # Must match one of the forwarded_ports above.
4244
PROMETHEUS_URL: 'https://prometheus-basicauth.{{PLATFORM_PROJECT}}.measurementlab.net/'

cloudbuild/app.yaml.template

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,7 @@ env_variables:
3737
MAXMIND_URL: gs://downloader-{{PLATFORM_PROJECT}}/Maxmind/current/GeoLite2-City.tar.gz
3838
REDIS_ADDRESS: {{REDIS_ADDRESS}}
3939
RATE_LIMIT_REDIS_ADDRESS: {{RATE_LIMIT_REDIS_ADDRESS}}
40+
RATE_LIMIT_INTERVAL: {{RATE_LIMIT_INTERVAL}}
41+
RATE_LIMIT_MAX: {{RATE_LIMIT_MAX}}
4042
PROMETHEUSX_LISTEN_ADDRESS: ':9090' # Must match one of the forwarded_ports above.
4143
PROMETHEUS_URL: 'https://prometheus-basicauth.{{PLATFORM_PROJECT}}.measurementlab.net/'

cloudbuild/cloudbuild.yaml

Lines changed: 52 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,59 @@ timeout: 3600s
22

33
options:
44
env:
5-
- PROJECT_ID=$PROJECT_ID
6-
- WORKSPACE_LINK=/go/src/github.com/m-lab/locate
5+
- PROJECT_ID=$PROJECT_ID
6+
- WORKSPACE_LINK=/go/src/github.com/m-lab/locate
77

88
steps:
9-
# Run unit tests for environment.
10-
- name: gcr.io/$PROJECT_ID/golang-cbif:1.20
11-
env:
12-
- GONOPROXY=github.com/m-lab/go/*
13-
args:
14-
- go version
15-
- go get -v -t ./...
16-
- go vet ./...
17-
- go test ./... -race
18-
- go test -v ./...
9+
# Run unit tests for environment.
10+
- name: gcr.io/$PROJECT_ID/golang-cbif:1.20
11+
env:
12+
- GONOPROXY=github.com/m-lab/go/*
13+
args:
14+
- go version
15+
- go get -v -t ./...
16+
- go vet ./...
17+
- go test ./... -race
18+
- go test -v ./...
1919

20-
# Deployment of APIs in sandbox & staging.
21-
- name: gcr.io/$PROJECT_ID/gcloud-jsonnet-cbif:1.1
22-
env:
23-
# Use cbif condition: only run these steps in one of these projects.
24-
- PROJECT_IN=mlab-sandbox,mlab-staging
25-
args:
26-
- cp cloudbuild/app.yaml.template app.yaml
27-
- >
28-
sed -i
29-
-e 's/{{PROJECT}}/$PROJECT_ID/g'
30-
-e 's/{{PLATFORM_PROJECT}}/$_PLATFORM_PROJECT/'
31-
-e 's/{{REDIS_ADDRESS}}/$_REDIS_ADDRESS/'
32-
-e 's/{{RATE_LIMIT_REDIS_ADDRESS}}/$_RATE_LIMIT_REDIS_ADDRESS/'
33-
app.yaml
34-
- gcloud --project $PROJECT_ID app deploy --promote app.yaml
35-
# After deploying the new service, deploy the openapi spec.
36-
- sed -i -e 's/{{PROJECT}}/$PROJECT_ID/' -e 's/{{DEPLOYMENT}}/$PROJECT_ID/' openapi.yaml
37-
- gcloud endpoints services deploy openapi.yaml
20+
# Deployment of APIs in sandbox & staging.
21+
- name: gcr.io/$PROJECT_ID/gcloud-jsonnet-cbif:1.1
22+
env:
23+
# Use cbif condition: only run these steps in one of these projects.
24+
- PROJECT_IN=mlab-sandbox,mlab-staging
25+
args:
26+
- cp cloudbuild/app.yaml.template app.yaml
27+
- >
28+
sed -i
29+
-e 's/{{PROJECT}}/$PROJECT_ID/g'
30+
-e 's/{{PLATFORM_PROJECT}}/$_PLATFORM_PROJECT/'
31+
-e 's/{{REDIS_ADDRESS}}/$_REDIS_ADDRESS/'
32+
-e 's/{{RATE_LIMIT_REDIS_ADDRESS}}/$_RATE_LIMIT_REDIS_ADDRESS/'
33+
-e 's/{{RATE_LIMIT_INTERVAL}}/$_RATE_LIMIT_INTERVAL/'
34+
-e 's/{{RATE_LIMIT_MAX}}/$_RATE_LIMIT_MAX/'
35+
app.yaml
36+
- gcloud --project $PROJECT_ID app deploy --promote app.yaml
37+
# After deploying the new service, deploy the openapi spec.
38+
- sed -i -e 's/{{PROJECT}}/$PROJECT_ID/' -e 's/{{DEPLOYMENT}}/$PROJECT_ID/' openapi.yaml
39+
- gcloud endpoints services deploy openapi.yaml
3840

39-
# Deployment of APIs in mlab-ns.
40-
- name: gcr.io/$PROJECT_ID/gcloud-jsonnet-cbif:1.1
41-
env:
42-
# Use cbif condition: only run these steps in this project.
43-
- PROJECT_IN=mlab-ns
44-
args:
45-
- cp cloudbuild/app.yaml.mlab-ns.template app.yaml
46-
- >
47-
sed -i
48-
-e 's/{{PROJECT}}/$PROJECT_ID/g'
49-
-e 's/{{PLATFORM_PROJECT}}/$_PLATFORM_PROJECT/'
50-
-e 's/{{REDIS_ADDRESS}}/$_REDIS_ADDRESS/'
51-
-e 's/{{RATE_LIMIT_REDIS_ADDRESS}}/$_RATE_LIMIT_REDIS_ADDRESS/'
52-
app.yaml
53-
- gcloud --project $PROJECT_ID app deploy --no-promote app.yaml
54-
# After deploying the new service, deploy the openapi spec.
55-
- sed -i -e 's/{{PROJECT}}/$PROJECT_ID/' -e 's/{{DEPLOYMENT}}/Production/' openapi.yaml
56-
- gcloud endpoints services deploy openapi.yaml
41+
# Deployment of APIs in mlab-ns.
42+
- name: gcr.io/$PROJECT_ID/gcloud-jsonnet-cbif:1.1
43+
env:
44+
# Use cbif condition: only run these steps in this project.
45+
- PROJECT_IN=mlab-ns
46+
args:
47+
- cp cloudbuild/app.yaml.mlab-ns.template app.yaml
48+
- >
49+
sed -i
50+
-e 's/{{PROJECT}}/$PROJECT_ID/g'
51+
-e 's/{{PLATFORM_PROJECT}}/$_PLATFORM_PROJECT/'
52+
-e 's/{{REDIS_ADDRESS}}/$_REDIS_ADDRESS/'
53+
-e 's/{{RATE_LIMIT_REDIS_ADDRESS}}/$_RATE_LIMIT_REDIS_ADDRESS/'
54+
-e 's/{{RATE_LIMIT_INTERVAL}}/$_RATE_LIMIT_INTERVAL/'
55+
-e 's/{{RATE_LIMIT_MAX}}/$_RATE_LIMIT_MAX/'
56+
app.yaml
57+
- gcloud --project $PROJECT_ID app deploy --no-promote app.yaml
58+
# After deploying the new service, deploy the openapi spec.
59+
- sed -i -e 's/{{PROJECT}}/$PROJECT_ID/' -e 's/{{DEPLOYMENT}}/Production/' openapi.yaml
60+
- gcloud endpoints services deploy openapi.yaml

0 commit comments

Comments
 (0)