metadata.yaml (271 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 annotations: config.kubernetes.io/local-config: "true" spec: info: title: Regional HTTP Load Balancer Terraform Module source: repo: https://github.com/googlestaging/terraform-google-regional-lb-http.git sourceType: git version: 0.4.3 actuationTool: flavor: Terraform version: ">= 1.3" description: {} content: subBlueprints: - name: backend location: modules/backend - name: frontend location: modules/frontend 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: name description: Name for the backend service. varType: string required: true - name: project_id description: The project to deploy to, if not set the default provider project is used. varType: string required: true - name: region description: The region where the load balancer backend service will be created varType: string required: true - name: load_balancing_scheme description: Load balancing scheme type (EXTERNAL for classic external load balancer, EXTERNAL_MANAGED for Envoy-based load balancer, and INTERNAL_SELF_MANAGED for traffic director) 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: 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: Security policy in string. 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 - 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: serverless_neg_backends description: The list of serverless backend which serves the traffic. 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: [] - 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) 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: [] - name: create_address description: Create a new global IPv4 address varType: bool defaultValue: true - name: labels description: The labels to attach to resources created by this module varType: map(string) defaultValue: {} - name: ssl description: "Set to `true` to enable SSL support. If `true` then at least one of these are required: 1) `ssl_certificates` OR 2) `create_ssl_certificate` set to `true` and `private_key/certificate` OR 3) `managed_ssl_certificate_domains`, OR 4) `certificate_map`" varType: bool defaultValue: false - name: create_ssl_certificate description: If `true`, Create certificate using `private_key/certificate` varType: bool defaultValue: false - name: private_key description: Content of the private SSL key. Requires `ssl` to be set to `true` and `create_ssl_certificate` set to `true` varType: string - name: certificate description: Content of the SSL certificate. Requires `ssl` to be set to `true` and `create_ssl_certificate` set to `true` varType: string - name: ssl_certificates description: SSL cert self_link list. Requires `ssl` to be set to `true` varType: list(string) defaultValue: [] - name: managed_ssl_certificate_domains description: Create Google-managed SSL certificates for specified domains. Requires `ssl` to be set to `true` varType: list(string) defaultValue: [] - name: random_certificate_suffix description: Bool to enable/disable random certificate name generation. Set and keep this to true if you need to change the SSL cert. varType: bool defaultValue: false - name: network description: Network for INTERNAL_SELF_MANAGED load balancing scheme varType: string defaultValue: default - name: http_port description: The port for the HTTP load balancer varType: number defaultValue: 80 - name: https_port description: The port for the HTTPS load balancer varType: number defaultValue: 443 - name: create_url_map description: Set to `false` if url_map variable is provided. varType: bool defaultValue: true - name: https_redirect description: Set to `true` to enable https redirect on the lb. varType: bool defaultValue: false - name: ssl_policy description: Selfink to SSL Policy varType: string - name: server_tls_policy description: The resource URL for the server TLS policy to associate with the https proxy service varType: string - name: http_keep_alive_timeout_sec description: Specifies how long to keep a connection open, after completing a response, while there is no matching traffic (in seconds). varType: number - name: address description: Existing IPv4 address to use (the actual IP address value) varType: string - name: http_forward description: Set to `false` to disable HTTP port 80 forward varType: bool defaultValue: true - name: url_map_input description: List of host, path and backend service for creating url_map varType: |- list(object({ host = string path = string backend_service = string })) defaultValue: [] - name: url_map_resource_uri description: The url_map resource to use. Default is to send all traffic to first backend. varType: string outputs: - name: backend_services description: The region backend service resources. - name: external_ip description: The external IPv4 assigned to the fowarding rule. - name: http_proxy description: The HTTP proxy used by this module. - name: https_proxy description: The HTTPS proxy used by this module. - name: url_map description: The default URL map used by this module. 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"