Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions metadata.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2025 Google LLC
# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -323,13 +323,13 @@ spec:
roles:
- level: Project
roles:
- roles/cloudkms.admin
- roles/resourcemanager.projectIamAdmin
- roles/run.admin
- roles/iam.serviceAccountAdmin
- roles/artifactregistry.admin
- roles/iam.serviceAccountUser
- roles/serviceusage.serviceUsageViewer
- roles/cloudkms.admin
- roles/resourcemanager.projectIamAdmin
services:
- accesscontextmanager.googleapis.com
- cloudbilling.googleapis.com
Expand All @@ -344,6 +344,6 @@ spec:
- storage-api.googleapis.com
providerVersions:
- source: hashicorp/google
version: ">= 6, < 7"
version: ">= 6, < 8"
- source: hashicorp/google-beta
version: ">= 6, < 7"
version: ">= 6, < 8"
2 changes: 1 addition & 1 deletion modules/v2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Functional examples are included in the
| binary\_authorization | Settings for the Binary Authorization feature. | <pre>object({<br> breakglass_justification = optional(bool) # If present, indicates to use Breakglass using this justification. If useDefault is False, then it must be empty. For more information on breakglass, [see](https://cloud.google.com/binary-authorization/docs/using-breakglass)<br> use_default = optional(bool) #If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled.<br> })</pre> | `null` | no |
| client | Arbitrary identifier for the API client and version identifier | <pre>object({<br> name = optional(string, null)<br> version = optional(string, null)<br> })</pre> | `{}` | no |
| cloud\_run\_deletion\_protection | This field prevents Terraform from destroying or recreating the Cloud Run jobs and services | `bool` | `true` | no |
| containers | Container images for the service | <pre>list(object({<br> container_name = optional(string, null)<br> container_image = string<br> working_dir = optional(string, null)<br> depends_on_container = optional(list(string), null)<br> container_args = optional(list(string), null)<br> container_command = optional(list(string), null)<br> env_vars = optional(map(string), {})<br> env_secret_vars = optional(map(object({<br> secret = string<br> version = string<br> })), {})<br> volume_mounts = optional(list(object({<br> name = string<br> mount_path = string<br> })), [])<br> ports = optional(object({<br> name = optional(string, "http1")<br> container_port = optional(number, 8080)<br> }), {})<br> resources = optional(object({<br> limits = optional(object({<br> cpu = optional(string)<br> memory = optional(string)<br> nvidia_gpu = optional(string)<br> }))<br> cpu_idle = optional(bool, true)<br> startup_cpu_boost = optional(bool, false)<br> }), {})<br> startup_probe = optional(object({<br> failure_threshold = optional(number, null)<br> initial_delay_seconds = optional(number, null)<br> timeout_seconds = optional(number, null)<br> period_seconds = optional(number, null)<br> http_get = optional(object({<br> path = optional(string)<br> port = optional(string)<br> http_headers = optional(list(object({<br> name = string<br> value = string<br> })), [])<br> }), null)<br> tcp_socket = optional(object({<br> port = optional(number)<br> }), null)<br> grpc = optional(object({<br> port = optional(number)<br> service = optional(string)<br> }), null)<br> }), null)<br> liveness_probe = optional(object({<br> failure_threshold = optional(number, null)<br> initial_delay_seconds = optional(number, null)<br> timeout_seconds = optional(number, null)<br> period_seconds = optional(number, null)<br> http_get = optional(object({<br> path = optional(string)<br> port = optional(string)<br> http_headers = optional(list(object({<br> name = string<br> value = string<br> })), [])<br> }), null)<br> tcp_socket = optional(object({<br> port = optional(number)<br> }), null)<br> grpc = optional(object({<br> port = optional(number)<br> service = optional(string)<br> }), null)<br> }), null)<br> }))</pre> | n/a | yes |
| containers | Container images for the service | <pre>list(object({<br> container_name = optional(string, null)<br> container_image = string<br> working_dir = optional(string, null)<br> depends_on_container = optional(list(string), null)<br> container_args = optional(list(string), null)<br> container_command = optional(list(string), null)<br> env_vars = optional(map(string), {})<br> env_secret_vars = optional(map(object({<br> secret = string<br> version = string<br> })), {})<br> volume_mounts = optional(list(object({<br> name = string<br> mount_path = string<br> })), [])<br> ports = optional(object({<br> name = optional(string)<br> container_port = optional(number)<br> }), {})<br> resources = optional(object({<br> limits = optional(object({<br> cpu = optional(string)<br> memory = optional(string)<br> nvidia_gpu = optional(string)<br> }))<br> cpu_idle = optional(bool, true)<br> startup_cpu_boost = optional(bool, false)<br> }), {})<br> startup_probe = optional(object({<br> failure_threshold = optional(number, null)<br> initial_delay_seconds = optional(number, null)<br> timeout_seconds = optional(number, null)<br> period_seconds = optional(number, null)<br> http_get = optional(object({<br> path = optional(string)<br> port = optional(string)<br> http_headers = optional(list(object({<br> name = string<br> value = string<br> })), [])<br> }), null)<br> tcp_socket = optional(object({<br> port = optional(number)<br> }), null)<br> grpc = optional(object({<br> port = optional(number)<br> service = optional(string)<br> }), null)<br> }), null)<br> liveness_probe = optional(object({<br> failure_threshold = optional(number, null)<br> initial_delay_seconds = optional(number, null)<br> timeout_seconds = optional(number, null)<br> period_seconds = optional(number, null)<br> http_get = optional(object({<br> path = optional(string)<br> port = optional(string)<br> http_headers = optional(list(object({<br> name = string<br> value = string<br> })), [])<br> }), null)<br> tcp_socket = optional(object({<br> port = optional(number)<br> }), null)<br> grpc = optional(object({<br> port = optional(number)<br> service = optional(string)<br> }), null)<br> }), null)<br> }))</pre> | n/a | yes |
| create\_service\_account | Create a new service account for cloud run service | `bool` | `true` | no |
| custom\_audiences | One or more custom audiences that you want this service to support. Specify each custom audience as the full URL in a string. [Refer](https://cloud.google.com/run/docs/configuring/custom-audiences) | `list(string)` | `null` | no |
| description | Cloud Run service description. This field currently has a 512-character limit. | `string` | `null` | no |
Expand Down
15 changes: 12 additions & 3 deletions modules/v2/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -158,11 +158,20 @@ resource "google_cloud_run_v2_service" "main" {
args = containers.value.container_args
working_dir = containers.value.working_dir
depends_on = containers.value.depends_on_container

dynamic "ports" {
for_each = lookup(containers.value, "ports", {}) != {} ? [containers.value.ports] : []
for_each = try(
(
containers.value.ports != null &&
containers.value.ports.container_port != null &&
containers.value.ports.container_port > 0 &&
containers.value.ports.container_port < 65536
) ? [containers.value.ports] : [],
[]
)
content {
name = ports.value["name"]
container_port = ports.value["container_port"]
name = try(ports.value.name, null)
container_port = ports.value.container_port
}
}

Expand Down
8 changes: 4 additions & 4 deletions modules/v2/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ spec:
mount_path = string
})), [])
ports = optional(object({
name = optional(string, "http1")
container_port = optional(number, 8080)
name = optional(string)
container_port = optional(number)
}), {})
resources = optional(object({
limits = optional(object({
Expand Down Expand Up @@ -679,6 +679,6 @@ spec:
- storage-api.googleapis.com
providerVersions:
- source: hashicorp/google
version: ">= 6, < 7"
version: ">= 6, < 8"
- source: hashicorp/google-beta
version: ">= 6, < 7"
version: ">= 6, < 8"
4 changes: 2 additions & 2 deletions modules/v2/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ variable "containers" {
mount_path = string
})), [])
ports = optional(object({
name = optional(string, "http1")
container_port = optional(number, 8080)
name = optional(string)
container_port = optional(number)
}), {})
resources = optional(object({
limits = optional(object({
Expand Down
Loading