modules/backend/metadata.yaml (146 lines of code) (raw):
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: blueprints.cloud.google.com/v1alpha1
kind: BlueprintMetadata
metadata:
name: terraform-google-regional-lb-http-backend
annotations:
config.kubernetes.io/local-config: "true"
spec:
info:
title: HTTP Regional Load balancer backend module
source:
repo: https://github.com/googlestaging/terraform-google-regional-lb-http.git
sourceType: git
dir: /modules/backend
version: 0.4.3
actuationTool:
flavor: Terraform
version: ">= 1.3"
description: {}
content:
examples:
- name: cloud-run
location: examples/cloud-run
- name: gce-mig
location: examples/gce-mig
- name: internal-lb-cloud-run
location: examples/internal-lb-cloud-run
- name: internal-lb-gce-mig
location: examples/internal-lb-gce-mig
interfaces:
variables:
- name: project_id
description: The project to deploy load balancer backend resources.
varType: string
required: true
- name: region
description: The region where the load balancer backend service will be created
varType: string
required: true
- name: name
description: Name for the load balancer backend service.
varType: string
required: true
- name: host_path_mappings
description: The list of host/path for which traffic should be sent to this backend service
varType: |-
list(object({
host = string
path = string
}))
defaultValue:
- host: "*"
path: /*
- name: serverless_neg_backends
description: The list of serverless backends which serves the traffic. A region can have only one serverless backend.
varType: |-
list(object({
region = string
type = string // cloud-run, cloud-function, and app-engine
service_name = string
service_version = optional(string)
capacity_scaler = optional(number, 1.0)
}))
defaultValue: []
connections:
- source:
source: github.com/GoogleCloudPlatform/terraform-google-cloud-run//modules/v2
version: ">= 0.13"
spec:
outputExpr: "{\"region\": location, \"service_name\": service_name, \"type\": \"cloud-run\", \"service_version\": \"\", \"capacity_scaler\": 1.0}"
- name: groups
description: The list of backend instance group which serves the traffic.
varType: |-
list(object({
group = string
description = optional(string)
balancing_mode = optional(string)
capacity_scaler = optional(number, 1.0)
max_connections = optional(number)
max_connections_per_instance = optional(number)
max_connections_per_endpoint = optional(number)
max_rate = optional(number)
max_rate_per_instance = optional(number)
max_rate_per_endpoint = optional(number)
max_utilization = optional(number)
}))
defaultValue: []
connections:
- source:
source: github.com/terraform-google-modules/terraform-google-vm//modules/mig
version: ">= 12.0"
spec:
outputExpr: "{\"group\": instance_group, \"description\": \"Input created by connection\"}"
- name: load_balancing_scheme
description: Load balancing scheme type (EXTERNAL for classic external load balancer, EXTERNAL_MANAGED for Envoy-based load balancer, and INTERNAL_MANAGED for internal load balancer)
varType: string
defaultValue: EXTERNAL_MANAGED
- name: protocol
description: The protocol this BackendService uses to communicate with backends.
varType: string
defaultValue: HTTP
- name: port_name
description: Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
varType: string
defaultValue: http
- name: description
description: Description of the backend service.
varType: string
- name: health_check
description: Input for creating HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. A health check must be specified unless the backend service uses an internet or serverless NEG as a backend.
varType: |-
object({
host = optional(string, null)
request_path = optional(string, null)
request = optional(string, null)
response = optional(string, null)
port = optional(number, null)
port_name = optional(string, null)
proxy_header = optional(string, null)
port_specification = optional(string, null)
protocol = optional(string, null)
check_interval_sec = optional(number, 10)
timeout_sec = optional(number, 10)
healthy_threshold = optional(number, 2)
unhealthy_threshold = optional(number, 2)
logging = optional(bool, true)
})
- name: firewall_networks
description: Names of the networks to create firewall rules in
varType: list(string)
defaultValue:
- default
- name: firewall_projects
description: Names of the projects to create firewall rules in
varType: list(string)
defaultValue:
- default
- name: target_tags
description: List of target tags for health check firewall rule. Exactly one of target_tags or target_service_accounts should be specified.
varType: list(string)
defaultValue: []
- name: target_service_accounts
description: List of target service accounts for health check firewall rule. Exactly one of target_tags or target_service_accounts should be specified.
varType: list(string)
defaultValue: []
- name: firewall_source_ranges
description: Source ranges for regional Application Load Balancer's proxies. This should be set to ip_cidr_range of your REGIONAL_MANAGED_PROXY subnet.
varType: list(string)
defaultValue:
- 10.129.0.0/23
- name: connection_draining_timeout_sec
description: Time for which instance will be drained (not accept new connections, but still work to finish started).
varType: number
- name: enable_cdn
description: Enable Cloud CDN for this BackendService.
varType: bool
defaultValue: false
- name: session_affinity
description: "Type of session affinity to use. Possible values are: NONE, CLIENT_IP, CLIENT_IP_PORT_PROTO, CLIENT_IP_PROTO, GENERATED_COOKIE, HEADER_FIELD, HTTP_COOKIE, STRONG_COOKIE_AFFINITY."
varType: string
- name: affinity_cookie_ttl_sec
description: Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE.
varType: number
- name: locality_lb_policy
description: The load balancing algorithm used within the scope of the locality.
varType: string
- name: security_policy
description: The resource URL for the security policy to associate with the backend service
varType: string
- name: timeout_sec
description: This has different meaning for different type of load balancing. Please refer https://cloud.google.com/load-balancing/docs/backend-service#timeout-setting
varType: number
outputs:
- name: backend_service_info
description: Host, path and backend service mapping
type:
- list
- - object
- backend_service: string
host: string
path: string
requirements:
roles:
- level: Project
roles:
- roles/compute.xpnAdmin
- level: Project
roles:
- roles/storage.admin
- roles/compute.admin
- roles/run.admin
- roles/iam.serviceAccountUser
- roles/certificatemanager.owner
- roles/vpcaccess.admin
- roles/iam.serviceAccountAdmin
services:
- cloudresourcemanager.googleapis.com
- storage-api.googleapis.com
- serviceusage.googleapis.com
- compute.googleapis.com
- run.googleapis.com
- iam.googleapis.com
- certificatemanager.googleapis.com
- vpcaccess.googleapis.com
providerVersions:
- source: hashicorp/google
version: ">= 6.0, < 7"
- source: hashicorp/google-beta
version: ">= 6.0, < 7"
- source: hashicorp/random
version: ">= 2.1"