Terraform module for deploying Materialize on Google Cloud Platform (GCP) with all required infrastructure components.
This module sets up:
- GKE cluster for Materialize workloads
- Cloud SQL PostgreSQL instance for metadata storage
- Cloud Storage bucket for persistence
- Required networking and security configurations
- Service accounts with proper IAM permissions
Warning This is provided on a best-effort basis and Materialize cannot offer support for this module.
The module has been tested with:
- GKE version 1.28
- PostgreSQL 15
- Materialize Operator v0.1.0
Name | Version |
---|---|
terraform | >= 1.0 |
>= 6.0 | |
helm | ~> 2.0 |
kubernetes | ~> 2.0 |
Name | Version |
---|---|
6.20.0 |
Name | Source | Version |
---|---|---|
database | ./modules/database | n/a |
gke | ./modules/gke | n/a |
operator | github.com/MaterializeInc/terraform-helm-materialize | v0.1.5 |
storage | ./modules/storage | n/a |
Name | Type |
---|---|
google_client_config.current | data source |
google_client_config.default | data source |
Name | Description | Type | Default | Required |
---|---|---|---|---|
database_config | Cloud SQL configuration | object({ |
n/a | yes |
gke_config | GKE cluster configuration. Make sure to use large enough machine types for your Materialize instances. | object({ |
{ |
no |
helm_chart | Chart name from repository or local path to chart. For local charts, set the path to the chart directory. | string |
"materialize-operator" |
no |
helm_values | Values to pass to the Helm chart | any |
{} |
no |
install_materialize_operator | Whether to install the Materialize operator | bool |
false |
no |
install_metrics_server | Whether to install the metrics-server for the Materialize Console. Defaults to false since GKE installs one by default in the kube-system namespace. Only set to true if the GKE cluster was deployed with monitoring explicitly turned off. Refer to the GKE docs for more information, including impact to GKE customer support efforts. | bool |
false |
no |
labels | Labels to apply to all resources | map(string) |
{} |
no |
materialize_instances | Configuration for Materialize instances | list(object({ |
[] |
no |
namespace | Kubernetes namespace for Materialize | string |
"materialize" |
no |
network_config | Network configuration for the GKE cluster | object({ |
{ |
no |
operator_namespace | Namespace for the Materialize operator | string |
"materialize" |
no |
operator_version | Version of the Materialize operator to install | string |
"v25.1.0" |
no |
orchestratord_version | Version of the Materialize orchestrator to install | string |
"v0.130.1" |
no |
prefix | Prefix to be used for resource names | string |
"materialize" |
no |
project_id | The ID of the project where resources will be created | string |
n/a | yes |
region | The region where resources will be created | string |
"us-central1" |
no |
use_local_chart | Whether to use a local chart instead of one from a repository | bool |
false |
no |
Name | Description |
---|---|
connection_strings | Formatted connection strings for Materialize |
database | Cloud SQL instance details |
gke_cluster | GKE cluster details |
operator | Materialize operator details |
service_accounts | Service account details |
storage | GCS bucket details |