Newer
Older
# GCP Cloud Run manager terraform module
This module manages a Cloud Run-hosted container. It takes care of making
sure the container is connected to a Cloud SQL instance and sets
environment variables on the application.
Specify the project to deploy into on the command line. So, for
example, to deploy to the project ``my-project``:
```console
$ terraform init
$ terraform apply -var project=my-project
```
In this example, terraform is configured to use default application credentials.
For Google APIs and these credentials should correspond to a user with owner or
editor access to the target project. You can use the ``gcloud`` command line
tool to set your personal credentials as application default credentials. See
the ``gcloud auth application-default`` command output for more information.
## Custom domain mapping
Setting the `dns_name` will create a domain mapping for the webapp. Before
setting this value you *must* have verified ownership of the domain with Google.
[Instructions on how to do
this](https://guidebook.devops.uis.cam.ac.uk/en/latest/notes/google-domain-verification/)
can be found in the DevOps division guidebook.
## Monitoring and Alerting
If the variable [alerting_email_address](variables.tf) is set, the module adds
basic uptime alerting via email for failing http polling. See [variables.tf](variables.tf)
for how to configure alerting and monitoring.
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Note that the project containing resources to be monitored must be in a
Stackdriver monitoring workspace and this must be configured manually. At the
time of writing there is no terraform support for this. This module will error
when applying if this is not so.
Stackdriver distinguishes between workspaces and projects within those
workspaces. Each workspace must have a host project and that project *must* be
the default project of the `google.stackdriver` provider used by this module.
The `google.stackdriver` must be configured with credentials allowing monitoring
resources to be created in the *host* project.
If the workspace host project differs from the project which contains the
resources to be monitored, you can use a provider alias:
```tf
provider "google" {
project = "my-project"
# ... some credentials for the *project* admin ...
}
provider "google" {
project = "stackdriver-host-project"
alias = "host"
# ... some credentials for the *product* admin ...
}
module "cloud_run_service" {
# ... other parameters ...
providers = {
google.stackdriver = google.host
}
}
```