Skip to content

Commit a49f1b4

Browse files
feat(job-exec): add support of Direct VPC egress
1 parent 2004e37 commit a49f1b4

File tree

8 files changed

+40
-23
lines changed

8 files changed

+40
-23
lines changed

metadata.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,13 +321,13 @@ spec:
321321
roles:
322322
- level: Project
323323
roles:
324+
- roles/iam.serviceAccountAdmin
324325
- roles/artifactregistry.admin
325326
- roles/iam.serviceAccountUser
326327
- roles/serviceusage.serviceUsageViewer
327328
- roles/cloudkms.admin
328329
- roles/resourcemanager.projectIamAdmin
329330
- roles/run.admin
330-
- roles/iam.serviceAccountAdmin
331331
services:
332332
- accesscontextmanager.googleapis.com
333333
- cloudbilling.googleapis.com

modules/job-exec/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Functional examples are included in the
5555
| timeout | Max allowed time duration the Task may be active before the system will actively try to mark it failed and kill associated containers. | `string` | `"600s"` | no |
5656
| volume\_mounts | Volume to mount into the container's filesystem. | <pre>list(object({<br> name = string<br> mount_path = string<br> }))</pre> | `[]` | no |
5757
| volumes | A list of Volumes to make available to containers. | <pre>list(object({<br> name = string<br> cloud_sql_instance = optional(object({<br> instances = set(string)<br> }))<br> gcs = optional(object({<br> bucket = string<br> read_only = optional(bool)<br> mount_options = optional(list(string))<br> }))<br> }))</pre> | `[]` | no |
58-
| vpc\_access | VPC Access configuration to use for this Task. | <pre>list(object({<br> connector = string<br> egress = string<br> }))</pre> | `[]` | no |
58+
| vpc\_access | Configure this to enable your service to send traffic to a Virtual Private Cloud. Set egress to ALL\_TRAFFIC or PRIVATE\_RANGES\_ONLY. Choose a connector or network\_interfaces (for direct VPC egress). [More info](https://cloud.google.com/run/docs/configuring/connecting-vpc) | <pre>object({<br> connector = optional(string)<br> egress = optional(string)<br> network_interfaces = optional(object({<br> network = optional(string)<br> subnetwork = optional(string)<br> tags = optional(list(string))<br> }))<br> })</pre> | `null` | no |
5959

6060
## Outputs
6161

modules/job-exec/main.tf

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,18 @@ resource "google_cloud_run_v2_job" "job" {
9898
}
9999

100100
dynamic "vpc_access" {
101-
for_each = var.vpc_access
101+
for_each = var.vpc_access != null ? [var.vpc_access] : []
102102
content {
103103
connector = vpc_access.value["connector"]
104104
egress = vpc_access.value["egress"]
105+
dynamic "network_interfaces" {
106+
for_each = var.vpc_access.network_interfaces != null ? [var.vpc_access.network_interfaces] : []
107+
content {
108+
network = network_interfaces.value["network"]
109+
subnetwork = network_interfaces.value["subnetwork"]
110+
tags = network_interfaces.value["tags"]
111+
}
112+
}
105113
}
106114
}
107115
}

modules/job-exec/metadata.yaml

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,17 @@ spec:
173173
}))
174174
defaultValue: []
175175
- name: vpc_access
176-
description: VPC Access configuration to use for this Task.
176+
description: Configure this to enable your service to send traffic to a Virtual Private Cloud. Set egress to ALL_TRAFFIC or PRIVATE_RANGES_ONLY. Choose a connector or network_interfaces (for direct VPC egress). [More info](https://cloud.google.com/run/docs/configuring/connecting-vpc)
177177
varType: |-
178-
list(object({
179-
connector = string
180-
egress = string
181-
}))
182-
defaultValue: []
178+
object({
179+
connector = optional(string)
180+
egress = optional(string)
181+
network_interfaces = optional(object({
182+
network = optional(string)
183+
subnetwork = optional(string)
184+
tags = optional(list(string))
185+
}))
186+
})
183187
- name: limits
184188
description: Resource limits to the container
185189
varType: |-
@@ -203,13 +207,13 @@ spec:
203207
roles:
204208
- level: Project
205209
roles:
210+
- roles/cloudkms.admin
206211
- roles/resourcemanager.projectIamAdmin
207212
- roles/run.admin
208213
- roles/iam.serviceAccountAdmin
209214
- roles/artifactregistry.admin
210215
- roles/iam.serviceAccountUser
211216
- roles/serviceusage.serviceUsageViewer
212-
- roles/cloudkms.admin
213217
services:
214218
- accesscontextmanager.googleapis.com
215219
- cloudbilling.googleapis.com

modules/job-exec/variables.tf

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,17 @@ variable "volume_mounts" {
137137
}
138138

139139
variable "vpc_access" {
140-
type = list(object({
141-
connector = string
142-
egress = string
143-
}))
144-
description = "VPC Access configuration to use for this Task."
145-
default = []
140+
type = object({
141+
connector = optional(string)
142+
egress = optional(string)
143+
network_interfaces = optional(object({
144+
network = optional(string)
145+
subnetwork = optional(string)
146+
tags = optional(list(string))
147+
}))
148+
})
149+
description = "Configure this to enable your service to send traffic to a Virtual Private Cloud. Set egress to ALL_TRAFFIC or PRIVATE_RANGES_ONLY. Choose a connector or network_interfaces (for direct VPC egress). [More info](https://cloud.google.com/run/docs/configuring/connecting-vpc)"
150+
default = null
146151
}
147152

148153
variable "limits" {

modules/secure-cloud-run-security/metadata.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,13 @@ spec:
131131
roles:
132132
- level: Project
133133
roles:
134-
- roles/iam.serviceAccountUser
135-
- roles/serviceusage.serviceUsageViewer
136-
- roles/cloudkms.admin
137134
- roles/resourcemanager.projectIamAdmin
138135
- roles/run.admin
139136
- roles/iam.serviceAccountAdmin
140137
- roles/artifactregistry.admin
138+
- roles/iam.serviceAccountUser
139+
- roles/serviceusage.serviceUsageViewer
140+
- roles/cloudkms.admin
141141
services:
142142
- accesscontextmanager.googleapis.com
143143
- cloudbilling.googleapis.com

modules/secure-serverless-harness/metadata.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,13 +280,13 @@ spec:
280280
roles:
281281
- level: Project
282282
roles:
283-
- roles/run.admin
284-
- roles/iam.serviceAccountAdmin
285283
- roles/artifactregistry.admin
286284
- roles/iam.serviceAccountUser
287285
- roles/serviceusage.serviceUsageViewer
288286
- roles/cloudkms.admin
289287
- roles/resourcemanager.projectIamAdmin
288+
- roles/run.admin
289+
- roles/iam.serviceAccountAdmin
290290
services:
291291
- accesscontextmanager.googleapis.com
292292
- cloudbilling.googleapis.com

modules/v2/metadata.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,13 +563,13 @@ spec:
563563
roles:
564564
- level: Project
565565
roles:
566+
- roles/run.admin
567+
- roles/iam.serviceAccountAdmin
566568
- roles/iam.serviceAccountUser
567569
- roles/serviceusage.serviceUsageViewer
568570
- roles/resourcemanager.projectIamAdmin
569571
- roles/compute.viewer
570572
- roles/iap.admin
571-
- roles/run.admin
572-
- roles/iam.serviceAccountAdmin
573573
services:
574574
- cloudresourcemanager.googleapis.com
575575
- compute.googleapis.com

0 commit comments

Comments
 (0)