@@ -37,8 +37,8 @@ variable "oauth_client_id" {
37
37
type = string
38
38
}
39
39
40
- variable "oauth_client_secret " {
41
- description = " OAuth 2 client ID (visit APIs & Services > Credentials, click on client) "
40
+ variable "issue_repo " {
41
+ description = " name of GitHub repo to post issues on "
42
42
type = string
43
43
}
44
44
@@ -47,6 +47,7 @@ variable "oauth_client_secret" {
47
47
# Cloud Run service.
48
48
49
49
resource "google_cloud_run_service" "worker" {
50
+ provider = google- beta
50
51
51
52
lifecycle {
52
53
ignore_changes = [
@@ -64,8 +65,9 @@ resource "google_cloud_run_service" "worker" {
64
65
template {
65
66
spec {
66
67
containers {
67
- # Don't hardcode the image here; get it from GCP. See the "data" block
68
- # below for more.
68
+ # Get the image from GCP (see the "data" block below).
69
+ # Exception: when first creating the service, replace this with a hardcoded
70
+ # image tag.
69
71
image = data. google_cloud_run_service . worker . template [0 ]. spec [0 ]. containers [0 ]. image
70
72
env {
71
73
name = " GOOGLE_CLOUD_PROJECT"
@@ -81,7 +83,16 @@ resource "google_cloud_run_service" "worker" {
81
83
}
82
84
env {
83
85
name = " VULN_WORKER_ISSUE_REPO"
84
- value = var. env == " dev" ? " " : " golang/vulndb"
86
+ value = var. issue_repo
87
+ }
88
+ env {
89
+ name = " VULN_GITHUB_ACCESS_TOKEN"
90
+ value_from {
91
+ secret_key_ref {
92
+ name = google_secret_manager_secret. vuln_github_access_token . secret_id
93
+ key = " latest"
94
+ }
95
+ }
85
96
}
86
97
env {
87
98
name = " VULN_WORKER_USE_PROFILER"
@@ -95,7 +106,7 @@ resource "google_cloud_run_service" "worker" {
95
106
}
96
107
}
97
108
98
- service_account_name = " frontend@ ${ var . project } .iam.gserviceaccount.com "
109
+ service_account_name = data . google_compute_default_service_account . default . email
99
110
# 60 minutes is the maximum Cloud Run request time.
100
111
timeout_seconds = 60 * 60
101
112
}
@@ -104,7 +115,7 @@ resource "google_cloud_run_service" "worker" {
104
115
annotations = {
105
116
" autoscaling.knative.dev/minScale" = var.min_frontend_instances
106
117
" autoscaling.knative.dev/maxScale" = " 1"
107
- " client.knative.dev/user-image" = data.google_cloud_run_service.worker.template[0 ].spec[0 ].containers[0 ].image
118
+ # "client.knative.dev/user-image" = data.google_cloud_run_service.worker.template[0].spec[0].containers[0].image
108
119
}
109
120
}
110
121
}
@@ -129,83 +140,31 @@ data "google_cloud_run_service" "worker" {
129
140
}
130
141
131
142
# ###############################################################
132
- # Load balancer for Cloud Run service .
143
+ # Other components .
133
144
134
- resource "google_compute_region_network_endpoint_group" "worker" {
135
- count = var. oauth_client_secret == " " ? 0 : 1
136
- name = " ${ var . env } -vuln-worker-neg"
137
- network_endpoint_type = " SERVERLESS"
138
- project = var. project
139
- region = var. region
140
- cloud_run {
141
- service = google_cloud_run_service. worker . name
142
- }
145
+ locals {
146
+ tz = " America/New_York"
143
147
}
144
148
145
- module "worker_lb" {
146
- count = var. oauth_client_secret == " " ? 0 : 1
147
- source = " GoogleCloudPlatform/lb-http/google//modules/serverless_negs"
148
- version = " ~> 6.1.1"
149
-
150
- name = " ${ var . env } -vuln-worker-lb"
149
+ resource google_secret_manager_secret "vuln_github_access_token" {
150
+ secret_id = " vuln-${ var . env } -github-access-token"
151
151
project = var. project
152
-
153
- ssl = true
154
- managed_ssl_certificate_domains = [" ${ var . env } -vuln-worker.go.dev" ]
155
- https_redirect = true
156
-
157
- backends = {
158
- default = {
159
- description = null
160
- groups = [
161
- {
162
- group = google_compute_region_network_endpoint_group.worker[0 ].id
163
- }
164
- ]
165
- enable_cdn = false
166
- security_policy = null
167
- custom_request_headers = null
168
- custom_response_headers = null
169
-
170
- iap_config = {
171
- enable = true
172
- oauth2_client_id = var.oauth_client_id
173
- oauth2_client_secret = var.oauth_client_secret
174
- }
175
- log_config = {
176
- enable = false
177
- sample_rate = null
178
- }
179
- }
152
+ replication {
153
+ automatic = true
180
154
}
181
155
}
182
156
183
- output "worker_url" {
184
- value = data. google_cloud_run_service . worker . status [0 ]. url
185
- }
186
-
187
- output "load_balancer_ip" {
188
- value = var. oauth_client_secret == " " ? " " : module. worker_lb [0 ]. external_ip
189
- }
190
-
191
- # ###############################################################
192
- # Other components.
193
-
194
- locals {
195
- tz = " America/New_York"
196
- }
197
-
198
157
data "google_compute_default_service_account" "default" {
199
158
project = var. project
200
159
}
201
160
202
- resource "google_cloud_scheduler_job" "issue_triage " {
203
- name = " ${ var . env } -issue-triage"
161
+ resource "google_cloud_scheduler_job" "vuln_issue_triage " {
162
+ name = " vuln- ${ var . env } -issue-triage"
204
163
description = " Updates the DB and files issues."
205
164
schedule = " 0 * * * *" # every hour
206
165
time_zone = local. tz
207
166
project = var. project
208
- attempt_deadline = format (" %ds" , 60 * 60 )
167
+ attempt_deadline = format (" %ds" , 30 * 60 )
209
168
210
169
http_target {
211
170
http_method = " POST"
0 commit comments