This example deploys a Cloud Run application, creates a Serverless Network Endpoint Group (NEG) and exposes it behind a Cloud HTTPS load balancer with HTTP-to-HTTPS redirection.
You can tweak this example to enable other functionalities such as:
- serving static assets from Cloud CDN
- enabling a security profile via Cloud Armor
- run global endpoints by deploying Cloud Run service to multiple regions.
[[ `basename $PWD` != cloudrun ]] && cd examples/cloudrun
- Install Terraform if it is not already installed (visit terraform.io for other distributions):
- Set the project, replace
YOUR_PROJECTwith your project ID:-
PROJECT=YOUR_PROJECT
gcloud config set project ${PROJECT}
- Configure the environment for Terraform:
[[ $CLOUD_SHELL ]] || gcloud auth application-default login
export GOOGLE_PROJECT=$(gcloud config get-value project)
This option provisions an HTTP forwarding rule (insecure) and is not recommended for production use. It is provided since it provisions faster than the Option 2.
-
Initialize:
terraform init -
Deploy the load balancer, replace
example.comwith your domain name.terraform apply -var=project_id=$PROJECT \ -var=ssl=false -var=domain=null -
It may take some time for the load balancer to provision. Visit the output IP address of the load balancer.
This options creates a Google-managed SSL certificate for your domain name, sets it up on HTTPS forwarding rule and creates a HTTP forwarding rule to redirect HTTP traffic to HTTPS.
-
Make sure you have a domain name. This is required since we provision a Google-managed SSL certificate specifically for this domain name.
-
Initialize:
terraform init -
Deploy the load balancer, replace
example.comwith your domain name.terraform apply -var=project_id=$PROJECT \ -var=domain=example.com -
After the deployment completes it outputs the IP address of the load balancer. Update DNS records for your domain to point to this IP address.
-
It may take around half an hour for the SSL certificate to be provisioned and the application to start serving traffic.
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| domain | Domain name to run the load balancer on. Used if ssl is true. |
string |
n/a | yes |
| lb_name | Name for load balancer and associated resources | string |
"tf-cr-lb" |
no |
| project_id | n/a | string |
n/a | yes |
| region | Location for load balancer and Cloud Run resources | string |
"us-central1" |
no |
| ssl | Run load balancer on HTTPS and provision managed certificate with provided domain. |
bool |
true |
no |
| Name | Description |
|---|---|
| load-balancer-ip | n/a |
