metadata.yaml (336 lines of code) (raw):
# Copyright 2024 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
annotations:
config.kubernetes.io/local-config: "true"
spec:
info:
title: Terraform Cloud Run Module
source:
repo: https://github.com/GoogleCloudPlatform/terraform-google-cloud-run.git
sourceType: git
version: 0.17.2
actuationTool:
flavor: Terraform
version: ">= 1.3"
description: {}
content:
subBlueprints:
- name: job-exec
location: modules/job-exec
- name: secure-cloud-run
location: modules/secure-cloud-run
- name: secure-cloud-run-core
location: modules/secure-cloud-run-core
- name: secure-cloud-run-security
location: modules/secure-cloud-run-security
- name: secure-serverless-harness
location: modules/secure-serverless-harness
- name: secure-serverless-net
location: modules/secure-serverless-net
- name: service-project-factory
location: modules/service-project-factory
- name: v2
location: modules/v2
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: service_name
description: The name of the Cloud Run service to create
varType: string
required: true
- name: location
description: Cloud Run service deployment location
varType: string
required: true
- name: image
description: GCR hosted image URL to deploy
varType: string
required: true
- name: generate_revision_name
description: Option to enable revision name generation
varType: bool
defaultValue: true
- name: traffic_split
description: Managing traffic routing to the service
varType: |-
list(object({
latest_revision = bool
percent = number
revision_name = string
tag = string
}))
defaultValue:
- latest_revision: true
percent: 100
revision_name: v1-0-0
tag: null
- name: service_labels
description: A set of key/value label pairs to assign to the service
varType: map(string)
defaultValue: {}
- name: service_annotations
description: Annotations to the service. Acceptable values all, internal, internal-and-cloud-load-balancing
varType: map(string)
defaultValue:
run.googleapis.com/ingress: all
- name: template_labels
description: A set of key/value label pairs to assign to the container metadata
varType: map(string)
defaultValue: {}
- name: template_annotations
description: Annotations to the container metadata including VPC Connector and SQL. See [more details](https://cloud.google.com/run/docs/reference/rpc/google.cloud.run.v1#revisiontemplate)
varType: map(string)
defaultValue:
autoscaling.knative.dev/maxScale: 2
autoscaling.knative.dev/minScale: 1
generated-by: terraform
run.googleapis.com/client-name: terraform
- name: encryption_key
description: CMEK encryption key self-link expected in the format projects/PROJECT/locations/LOCATION/keyRings/KEY-RING/cryptoKeys/CRYPTO-KEY.
varType: string
- name: container_concurrency
description: Concurrent request limits to the service
varType: number
- name: timeout_seconds
description: Timeout for each request
varType: number
defaultValue: 120
- name: service_account_email
description: Service Account email needed for the service
varType: string
defaultValue: ""
- name: volumes
description: "[Beta] Volumes needed for environment variables (when using secret)"
varType: |-
list(object({
name = string
secret = set(object({
secret_name = string
items = map(string)
}))
}))
defaultValue: []
- name: limits
description: Resource limits to the container
varType: map(string)
- name: requests
description: Resource requests to the container
varType: map(string)
defaultValue: {}
- name: ports
description: Port which the container listens to (http1 or h2c)
varType: |-
object({
name = string
port = number
})
defaultValue:
name: http1
port: 8080
- name: argument
description: Arguments passed to the ENTRYPOINT command, include these only if image entrypoint needs arguments
varType: list(string)
defaultValue: []
- name: container_command
description: Leave blank to use the ENTRYPOINT command defined in the container image, include these only if image entrypoint should be overwritten
varType: list(string)
defaultValue: []
- name: startup_probe
description: |
Startup probe of application within the container.
All other probes are disabled if a startup probe is provided, until it succeeds.
Container will not be added to service endpoints if the probe fails.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
varType: |-
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)
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)
})
- name: liveness_probe
description: |
Periodic probe of container liveness. Container will be restarted if the probe fails.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
varType: |-
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)
http_headers = optional(list(object({
name = string
value = string
})), null)
}), null)
grpc = optional(object({
port = optional(number)
service = optional(string)
}), null)
})
- name: env_vars
description: Environment variables (cleartext)
varType: |-
list(object({
value = string
name = string
}))
defaultValue: []
- name: env_secret_vars
description: "[Beta] Environment variables (Secret Manager)"
varType: |-
list(object({
name = string
value_from = set(object({
secret_key_ref = map(string)
}))
}))
defaultValue: []
- name: volume_mounts
description: "[Beta] Volume Mounts to be attached to the container (when using secret)"
varType: |-
list(object({
mount_path = string
name = string
}))
defaultValue: []
- name: verified_domain_name
description: List of Custom Domain Name
varType: list(string)
defaultValue: []
- name: force_override
description: Option to force override existing mapping
varType: bool
defaultValue: false
- name: certificate_mode
description: The mode of the certificate (NONE or AUTOMATIC)
varType: string
defaultValue: NONE
- name: domain_map_labels
description: A set of key/value label pairs to assign to the Domain mapping
varType: map(string)
defaultValue: {}
- name: domain_map_annotations
description: Annotations to the domain map
varType: map(string)
defaultValue: {}
- name: members
description: Users/SAs to be given invoker access to the service
varType: list(string)
defaultValue: []
outputs:
- name: apphub_service_uri
description: Service URI in CAIS style to be used by Apphub.
type:
- object
- service_id: string
service_uri: string
- name: domain_map_id
description: Unique Identifier for the created domain map
type:
- tuple
- []
- name: domain_map_status
description: Status of Domain mapping
type:
- tuple
- []
- name: location
description: Location in which the Cloud Run service was created
type: string
- name: project_id
description: Google Cloud project in which the service was created
type: string
- name: revision
description: Deployed revision for the service
type: string
- name: service_id
description: Unique Identifier for the created service
type: string
- name: service_name
description: Name of the created service
type: string
- name: service_status
description: Status of the created service
type: string
- name: service_url
description: The URL on which the deployed service is available
type: string
- name: verified_domain_name
description: List of Custom Domain Name
type:
- tuple
- []
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
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"