modules/v2/metadata.yaml (531 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-cloud-run-v-2 annotations: config.kubernetes.io/local-config: "true" spec: info: title: Cloud Run v2 Service source: repo: https://github.com/GoogleCloudPlatform/terraform-google-cloud-run.git sourceType: git dir: /modules/v2 version: 0.17.2 actuationTool: flavor: Terraform version: ">= 1.3" description: {} content: examples: - name: cloud_run_vpc_connector location: examples/cloud_run_vpc_connector - name: secure_cloud_run location: examples/secure_cloud_run - name: secure_cloud_run_standalone location: examples/secure_cloud_run_standalone - name: simple_cloud_run location: examples/simple_cloud_run - name: simple_cloud_run_with_cmek location: examples/simple_cloud_run_with_cmek - name: simple_job_exec location: examples/simple_job_exec - name: v2 location: examples/v2 - name: v2_with_gmp location: examples/v2_with_gmp interfaces: variables: - name: project_id description: The project ID to deploy to varType: string required: true - name: location description: Cloud Run service deployment location varType: string required: true - name: service_name description: The name of the Cloud Run service to create varType: string required: true - name: description description: Cloud Run service description. This field currently has a 512-character limit. varType: string - name: containers description: Map of container images for the service varType: |- list(object({ container_name = optional(string, null) container_image = string working_dir = optional(string, null) depends_on_container = optional(list(string), null) container_args = optional(list(string), null) container_command = optional(list(string), null) env_vars = optional(map(string), {}) env_secret_vars = optional(map(object({ secret = string version = string })), {}) volume_mounts = optional(list(object({ name = string mount_path = string })), []) ports = optional(object({ name = optional(string, "http1") container_port = optional(number, 8080) }), {}) resources = optional(object({ limits = optional(object({ cpu = optional(string) memory = optional(string) })) cpu_idle = optional(bool, true) startup_cpu_boost = optional(bool, false) }), {}) startup_probe = optional(object({ failure_threshold = optional(number, null) initial_delay_seconds = optional(number, null) timeout_seconds = optional(number, null) period_seconds = optional(number, null) http_get = optional(object({ path = optional(string) port = optional(string) http_headers = optional(list(object({ name = string value = string })), []) }), null) tcp_socket = optional(object({ port = optional(number) }), null) grpc = optional(object({ port = optional(number) service = optional(string) }), null) }), null) liveness_probe = optional(object({ failure_threshold = optional(number, null) initial_delay_seconds = optional(number, null) timeout_seconds = optional(number, null) period_seconds = optional(number, null) http_get = optional(object({ path = optional(string) port = optional(string) http_headers = optional(list(object({ name = string value = string })), null) }), null) tcp_socket = optional(object({ port = optional(number) }), null) grpc = optional(object({ port = optional(number) service = optional(string) }), null) }), null) })) required: true connections: - source: source: github.com/terraform-google-modules/terraform-google-memorystore version: ">= 12.0" spec: outputExpr: "{\"REDIS_HOST\": host, \"REDIS_PORT\": env_vars.REDIS_PORT, \"REDIS_AUTH_STRING\": auth_string}" inputPath: env_vars - source: source: github.com/terraform-google-modules/terraform-google-sql-db//modules/postgresql version: ">= 23.0" spec: outputExpr: "{\"CLOUD_SQL_DATABASE_HOST\" : instance_first_ip_address, \"CLOUD_SQL_DATABASE_CONNECTION_NAME\" : instance_connection_name, \"CLOUD_SQL_DATABASE_NAME\" : env_vars.CLOUD_SQL_DATABASE_NAME}" inputPath: env_vars - source: source: github.com/terraform-google-modules/terraform-google-sql-db//modules/mysql version: ">= 23.0" spec: outputExpr: "{\"CLOUD_SQL_DATABASE_HOST\" : instance_first_ip_address, \"CLOUD_SQL_DATABASE_CONNECTION_NAME\" : instance_connection_name, \"CLOUD_SQL_DATABASE_NAME\" : env_vars.CLOUD_SQL_DATABASE_NAME}" inputPath: env_vars - source: source: github.com/terraform-google-modules/terraform-google-service-accounts//modules/simple-sa version: ">= 4.4" spec: outputExpr: "{\"SERVICE_ACCOUNT_EMAIL\" : email, \"SERVICE_ACCOUNT_IAM_EMAIL\" : iam_email}" inputPath: env_vars - source: source: github.com/GoogleCloudPlatform/terraform-google-cloud-run//modules/v2 version: ">= 0.13" spec: outputExpr: "{\"SERVICE_ENDPOINT\": service_uri}" inputPath: env_vars - source: source: github.com/terraform-google-modules/terraform-google-pubsub version: ">= 7.0.0" spec: outputExpr: "{\"TOPIC_ID\": id}" inputPath: env_vars - source: source: github.com/GoogleCloudPlatform/terraform-google-secret-manager//modules/simple-secret version: ">= 0.5.1" spec: outputExpr: "{\"SECRET\": env_vars.SECRET }" inputPath: env_secret_vars - source: source: github.com/GoogleCloudPlatform/terraform-google-cloud-spanner version: ">= 1.1.1" spec: outputExpr: env_vars inputPath: env_vars - source: source: github.com/terraform-google-modules/terraform-google-bigquery version: ^10.0 spec: outputExpr: "{\"BIGQUERY_DATASET\" : env_vars.BIGQUERY_DATASET, \"BIGQUERY_TABLES\" : env_vars.BIGQUERY_TABLES, \"BIGQUERY_VIEWS\" : env_vars.BIGQUERY_VIEWS, \"BIGQUERY_MATERIALIZED_VIEWS\" : env_vars.BIGQUERY_MATERIALIZED_VIEWS, \"BIGQUERY_EXTERNAL_TABLES\" : env_vars.BIGQUERY_EXTERNAL_TABLES, \"BIGQUERY_ROUTINES\" : env_vars.BIGQUERY_ROUTINES}" inputPath: env_vars - source: source: github.com/GoogleCloudPlatform/terraform-google-bigtable version: ">= 0.1.0" spec: outputExpr: "{\"BIGTABLE_INSTANCE_ID\" : instance_id, \"BIGTABLE_TABLE_ID\" : table_ids[0]}" inputPath: env_vars - source: source: github.com/GoogleCloudPlatform/terraform-google-regional-lb-http//modules/frontend version: ">= 0.4.0" spec: outputExpr: "{\"IP_ADDRESS_HTTP\": ip_address_http, \"IP_ADDRESS_HTTPS\": ip_address_https}" inputPath: env_vars - name: create_service_account description: Create a new service account for cloud run service varType: bool defaultValue: true - name: service_account_project_roles description: Roles to grant to the newly created cloud run SA in specified project. Should be used with create_service_account set to true and no input for service_account varType: list(string) defaultValue: [] connections: - source: source: github.com/GoogleCloudPlatform/terraform-google-secret-manager//modules/simple-secret version: ">= 0.5.1" spec: outputExpr: "[\"roles/secretmanager.secretAccessor\"]" - source: source: github.com/terraform-google-modules/terraform-google-sql-db//modules/postgresql version: ">= 23.0" spec: outputExpr: "[\"roles/cloudsql.instanceUser\", \"roles/cloudsql.client\"]" - source: source: github.com/terraform-google-modules/terraform-google-sql-db//modules/mysql version: ">= 23.0" spec: outputExpr: "[\"roles/cloudsql.instanceUser\", \"roles/cloudsql.client\"]" - source: source: github.com/terraform-google-modules/terraform-google-memorystore version: ">= 12.0" spec: outputExpr: "[\"roles/redis.editor\"]" - source: source: github.com/GoogleCloudPlatform/terraform-google-cloud-run//modules/v2 version: ">= 0.13" spec: outputExpr: "[\"roles/run.invoker\"]" - source: source: github.com/terraform-google-modules/terraform-google-project-factory//modules/project_services version: ">= 17.1.0" spec: outputExpr: "[\"roles/aiplatform.user\"]" - source: source: github.com/terraform-google-modules/terraform-google-pubsub version: ">= 7.0.0" spec: outputExpr: "[\"roles/pubsub.publisher\", \"roles/pubsub.subscriber\", \"roles/run.invoker\"]" - source: source: github.com/GoogleCloudPlatform/terraform-google-cloud-spanner version: ">= 1.1.1" spec: outputExpr: "[\"roles/spanner.databaseAdmin\"]" - source: source: github.com/terraform-google-modules/terraform-google-bigquery version: ^10.0 spec: outputExpr: "[\"roles/bigquery.dataEditor\"]" - source: source: github.com/GoogleCloudPlatform/terraform-google-bigtable version: ">= 0.1.0" spec: outputExpr: "[\"roles/bigtable.admin\"]" - name: members description: "Users/SAs to be given invoker access to the service. Grant invoker access by specifying the users or service accounts (SAs). Use allUsers for public access, allAuthenticatedUsers for access by logged-in Google users, or provide a list of specific users/SAs. See the complete list of available options: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service_iam#member\\/members-1" varType: list(string) defaultValue: [] - name: vpc_access description: VPC Access configuration to use for this Task. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc varType: |- object({ connector = optional(string) egress = optional(string) network_interfaces = optional(object({ network = optional(string) subnetwork = optional(string) tags = optional(list(string)) })) }) connections: - source: source: github.com/terraform-google-modules/terraform-google-network//modules/vpc-serverless-connector-beta version: ">= 9.1" spec: outputExpr: connector_ids inputPath: connector - name: cloud_run_deletion_protection description: This field prevents Terraform from destroying or recreating the Cloud Run v2 Jobs and Services varType: bool defaultValue: true - name: enable_prometheus_sidecar description: Enable Prometheus sidecar in Cloud Run instance. varType: bool defaultValue: false - name: volumes description: Volumes needed for environment variables (when using secret) varType: |- list(object({ name = string secret = optional(object({ secret = string default_mode = optional(string) items = optional(object({ path = string version = optional(string) mode = optional(string) })) })) cloud_sql_instance = optional(object({ instances = optional(list(string)) })) empty_dir = optional(object({ medium = optional(string) size_limit = optional(string) })) gcs = optional(object({ bucket = string read_only = optional(string) })) nfs = optional(object({ server = string path = string read_only = optional(string) })) })) defaultValue: [] connections: - source: source: github.com/terraform-google-modules/terraform-google-sql-db//modules/postgresql version: ">= 23.0" spec: outputExpr: instance_connection_name inputPath: cloud_sql_instance.instances - source: source: github.com/terraform-google-modules/terraform-google-sql-db//modules/mysql version: ">= 23.0" spec: outputExpr: instance_connection_name inputPath: cloud_sql_instance.instances - source: source: github.com/terraform-google-modules/terraform-google-cloud-storage//modules/simple_bucket version: ">= 8.0" spec: outputExpr: name inputPath: gcs.bucket - name: traffic description: Specifies how to distribute traffic over a collection of Revisions belonging to the Service. If traffic is empty or not provided, defaults to 100% traffic to the latest Ready Revision. varType: |- list(object({ type = optional(string, "TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST") percent = optional(number, 100) revision = optional(string, null) tag = optional(string, null) })) defaultValue: [] - name: service_scaling description: Scaling settings that apply to the whole service varType: |- object({ min_instance_count = optional(number) }) - name: service_labels description: Unstructured key value map that can be used to organize and categorize objects. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels varType: map(string) defaultValue: {} connections: - source: source: github.com/terraform-google-modules/terraform-google-project-factory//modules/project_services version: ">= 17.1.0" spec: outputExpr: "{\"vertex-ai\": \"true\"}" - name: service_annotations description: Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects. Refer https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#annotations varType: map(string) defaultValue: {} - name: client description: Arbitrary identifier for the API client and version identifier varType: |- object({ name = optional(string, null) version = optional(string, null) }) defaultValue: {} - name: ingress description: Provides the ingress settings for this Service. On output, returns the currently observed ingress settings, or INGRESS_TRAFFIC_UNSPECIFIED if no revision is active. varType: string defaultValue: INGRESS_TRAFFIC_ALL - name: launch_stage description: The launch stage as defined by Google Cloud Platform Launch Stages. Cloud Run supports ALPHA, BETA, and GA. If no value is specified, GA is assumed. varType: string defaultValue: GA - name: custom_audiences description: 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 varType: list(string) - name: binary_authorization description: Settings for the Binary Authorization feature. varType: |- object({ 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 use_default = optional(bool) #If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled. }) - name: revision description: The unique name for the revision. If this field is omitted, it will be automatically generated based on the Service name varType: string - name: template_scaling description: Scaling settings for this Revision. varType: |- object({ min_instance_count = optional(number) max_instance_count = optional(number) }) - name: template_labels description: Unstructured key value map that can be used to organize and categorize objects. For more information, visit https://cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels varType: map(string) defaultValue: {} - name: template_annotations description: Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects. Refer https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#annotations varType: map(string) defaultValue: {} - name: timeout description: Max allowed time for an instance to respond to a request. A duration in seconds with up to nine fractional digits, ending with 's' varType: string - name: service_account description: Email address of the IAM service account associated with the revision of the service varType: string connections: - source: source: github.com/terraform-google-modules/terraform-google-service-accounts//modules/simple-sa version: ">= 4.4" spec: outputExpr: email - name: encryption_key description: A reference to a customer managed encryption key (CMEK) to use to encrypt this container image. This is optional. varType: string - name: max_instance_request_concurrency description: Sets the maximum number of requests that each serving instance can receive. This is optional. varType: string - name: session_affinity description: Enables session affinity. For more information, go to https://cloud.google.com/run/docs/configuring/session-affinity varType: string - name: execution_environment description: The sandbox environment to host this Revision. varType: string defaultValue: EXECUTION_ENVIRONMENT_GEN2 outputs: - name: apphub_service_uri description: Service URI in CAIS style to be used by Apphub. type: - object - location: string service_id: string service_uri: string - name: creator description: Email address of the authenticated creator. type: string - name: effective_annotations description: All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services. type: - map - string - name: last_modifier description: Email address of the last authenticated modifier. type: string - name: latest_created_revision description: Name of the last created revision. See comments in reconciling for additional information on reconciliation process in Cloud Run. type: string - name: latest_ready_revision description: Name of the latest revision that is serving traffic. See comments in reconciling for additional information on reconciliation process in Cloud Run. type: string - name: location description: Location in which the Cloud Run service was created type: string - name: observed_generation description: The generation of this Service currently serving traffic. type: string - name: project_id description: Google Cloud project in which the service was created type: string - name: service_account_id description: Service account id and email type: - object - email: string id: string member: string - name: service_id description: Unique Identifier for the created service with format projects/{{project}}/locations/{{location}}/services/{{name}} type: string - name: service_name description: Name of the created service type: string - name: service_uri description: The main URI in which this Service is serving traffic. type: string - name: traffic_statuses description: Detailed status information for corresponding traffic targets. type: - list - - object - percent: number revision: string tag: string type: string uri: string requirements: roles: - level: Project roles: - roles/accesscontextmanager.policyAdmin - roles/orgpolicy.policyAdmin - level: Project roles: - roles/resourcemanager.folderAdmin - roles/resourcemanager.projectCreator - roles/resourcemanager.projectDeleter - level: Project roles: - roles/run.admin - roles/iam.serviceAccountAdmin - roles/artifactregistry.admin - roles/iam.serviceAccountUser - roles/serviceusage.serviceUsageViewer - roles/cloudkms.admin - roles/resourcemanager.projectIamAdmin services: - cloudresourcemanager.googleapis.com - storage-api.googleapis.com - serviceusage.googleapis.com - run.googleapis.com - cloudkms.googleapis.com - iam.googleapis.com - accesscontextmanager.googleapis.com - cloudbilling.googleapis.com - monitoring.googleapis.com - compute.googleapis.com providerVersions: - source: hashicorp/google version: ">= 6, < 7" - source: hashicorp/google-beta version: ">= 6, < 7"