Warning
This repository is archived and no longer maintained. Its contents have moved into the two Octue Twined Terraform modules. Nothing here is used by any current version of Twined.
| What was here | Where it is now |
|---|---|
functions/event_handler (+ its tests) |
terraform-octue-twined-cluster functions/event_handler |
functions/service_registry (+ its tests) |
terraform-octue-twined-core functions/service_registry |
terraform/ (the twined-gcp bucket) |
Deleted - no longer needed |
google_cloudfunctions2_function needs its source code as a zip file in a Cloud Storage bucket, so the Terraform
modules had to be pointed at an archive that already existed somewhere.
This repository solved that by holding the Python source for two cloud functions and, on each release, zipping it and
uploading it to a public bucket at gs://twined-gcp (in an Octue-owned Google Cloud project). The Terraform modules
then referenced those archives by version, e.g. event_handler/0.9.1.zip. The terraform/ directory here existed
solely to create that bucket and the workload identity federation the release workflow needed to write to it.
The upside was that the Python code could be released on its own cadence, independently of the Terraform modules, which only had to bump a version string.
The downside was a hard runtime dependency on Octue-owned infrastructure sitting in the middle of every user's deployment. When the Google Cloud project hosting the bucket was deleted, every fresh deployment of the cluster module broke with a 404 while cloning the function source (#35).
The two functions are small (under 300 lines between them) and share no code, so there was little benefit to
distributing them separately. Both Terraform modules now vendor the source code they need and build the archive
themselves with the hashicorp/archive provider at terraform apply time, uploading it to a bucket in the user's own
Google Cloud project. The modules are self-contained, and no Octue-owned infrastructure sits in anyone's deployment
path.
At the same time, the service registry moved from the cluster module to the core module (terraform-octue-twined-cluster#4): only one is needed per artifact registry repository, and the artifact registry is a core resource.
Use terraform-octue-twined-core 0.2.0 or above and terraform-octue-twined-cluster 0.4.0 or above. Versions of
the cluster module at or below 0.3.0 reference the deleted bucket and can no longer be deployed.
Note that the service registry's URL is now the core module's service_registry_url output, and its cloud function is
no longer prefixed with the environment name. If you've referenced the old URL in an octue.yaml service_registries
entry, update it.
See the managing infrastructure guide for the current setup instructions.