From 0c9b29e0823838d436f72d61ef136bb81fce10ed Mon Sep 17 00:00:00 2001 From: Bobby Iliev Date: Tue, 15 Apr 2025 10:16:21 +0300 Subject: [PATCH 1/6] Add support for extra environmentd environment variables --- README.md | 2 +- examples/simple/main.tf | 4 ++++ main.tf | 1 + variables.tf | 4 ++++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d9d3ddf..84c31f0 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,7 @@ disk_support_config = { | [install\_metrics\_server](#input\_install\_metrics\_server) | Whether to install the metrics-server for the Materialize Console | `bool` | `true` | no | | [kubernetes\_namespace](#input\_kubernetes\_namespace) | The Kubernetes namespace for the Materialize resources | `string` | `"materialize-environment"` | no | | [log\_group\_name\_prefix](#input\_log\_group\_name\_prefix) | Prefix for the CloudWatch log group name (will be combined with environment name) | `string` | `"materialize"` | no | -| [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. |
list(object({
name = string
namespace = optional(string)
database_name = string
environmentd_version = optional(string)
cpu_request = optional(string, "1")
memory_request = optional(string, "1Gi")
memory_limit = optional(string, "1Gi")
create_database = optional(bool, true)
create_nlb = optional(bool, true)
internal_nlb = optional(bool, true)
enable_cross_zone_load_balancing = optional(bool, true)
in_place_rollout = optional(bool, false)
request_rollout = optional(string)
force_rollout = optional(string)
balancer_memory_request = optional(string, "256Mi")
balancer_memory_limit = optional(string, "256Mi")
balancer_cpu_request = optional(string, "100m")
license_key = optional(string)
}))
| `[]` | no | +| [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. |
list(object({
name = string
namespace = optional(string)
database_name = string
environmentd_version = optional(string)
cpu_request = optional(string, "1")
memory_request = optional(string, "1Gi")
memory_limit = optional(string, "1Gi")
create_database = optional(bool, true)
create_nlb = optional(bool, true)
internal_nlb = optional(bool, true)
enable_cross_zone_load_balancing = optional(bool, true)
in_place_rollout = optional(bool, false)
request_rollout = optional(string)
force_rollout = optional(string)
balancer_memory_request = optional(string, "256Mi")
balancer_memory_limit = optional(string, "256Mi")
balancer_cpu_request = optional(string, "100m")
license_key = optional(string)
environmentd_extra_env = optional(list(object({
name = string
value = string
})), [])
}))
| `[]` | no | | [metrics\_retention\_days](#input\_metrics\_retention\_days) | Number of days to retain CloudWatch metrics | `number` | `7` | no | | [namespace](#input\_namespace) | Namespace for all resources, usually the organization or project name | `string` | n/a | yes | | [network\_id](#input\_network\_id) | The ID of the VPC in which resources will be deployed. Only used if create\_vpc is false. | `string` | `""` | no | diff --git a/examples/simple/main.tf b/examples/simple/main.tf index b4318c5..3a85adb 100644 --- a/examples/simple/main.tf +++ b/examples/simple/main.tf @@ -150,6 +150,10 @@ variable "materialize_instances" { balancer_memory_limit = optional(string, "256Mi") balancer_cpu_request = optional(string, "100m") license_key = optional(string) + environmentd_extra_env = optional(list(object({ + name = string + value = string + })), []) })) default = [] } diff --git a/main.tf b/main.tf index c505f72..df95f55 100644 --- a/main.tf +++ b/main.tf @@ -267,6 +267,7 @@ locals { create_nlb = instance.create_nlb internal_nlb = instance.internal_nlb enable_cross_zone_load_balancing = instance.enable_cross_zone_load_balancing + environmentd_extra_env = instance.environmentd_extra_env metadata_backend_url = format( "postgres://%s:%s@%s/%s?sslmode=require", diff --git a/variables.tf b/variables.tf index 2409e17..5898eb4 100644 --- a/variables.tf +++ b/variables.tf @@ -367,6 +367,10 @@ variable "materialize_instances" { balancer_memory_limit = optional(string, "256Mi") balancer_cpu_request = optional(string, "100m") license_key = optional(string) + environmentd_extra_env = optional(list(object({ + name = string + value = string + })), []) })) default = [] From b66161b0b0cf9e9aed11b16790e1c17ed61b995c Mon Sep 17 00:00:00 2001 From: Bobby Iliev Date: Tue, 13 May 2025 09:59:21 +0300 Subject: [PATCH 2/6] Add support for environmentd extra args --- README.md | 2 +- examples/simple/main.tf | 4 ++++ main.tf | 1 + variables.tf | 4 ++++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 84c31f0..a613c8c 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,7 @@ disk_support_config = { | [install\_metrics\_server](#input\_install\_metrics\_server) | Whether to install the metrics-server for the Materialize Console | `bool` | `true` | no | | [kubernetes\_namespace](#input\_kubernetes\_namespace) | The Kubernetes namespace for the Materialize resources | `string` | `"materialize-environment"` | no | | [log\_group\_name\_prefix](#input\_log\_group\_name\_prefix) | Prefix for the CloudWatch log group name (will be combined with environment name) | `string` | `"materialize"` | no | -| [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. |
list(object({
name = string
namespace = optional(string)
database_name = string
environmentd_version = optional(string)
cpu_request = optional(string, "1")
memory_request = optional(string, "1Gi")
memory_limit = optional(string, "1Gi")
create_database = optional(bool, true)
create_nlb = optional(bool, true)
internal_nlb = optional(bool, true)
enable_cross_zone_load_balancing = optional(bool, true)
in_place_rollout = optional(bool, false)
request_rollout = optional(string)
force_rollout = optional(string)
balancer_memory_request = optional(string, "256Mi")
balancer_memory_limit = optional(string, "256Mi")
balancer_cpu_request = optional(string, "100m")
license_key = optional(string)
environmentd_extra_env = optional(list(object({
name = string
value = string
})), [])
}))
| `[]` | no | +| [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. |
list(object({
name = string
namespace = optional(string)
database_name = string
environmentd_version = optional(string)
cpu_request = optional(string, "1")
memory_request = optional(string, "1Gi")
memory_limit = optional(string, "1Gi")
create_database = optional(bool, true)
create_nlb = optional(bool, true)
internal_nlb = optional(bool, true)
enable_cross_zone_load_balancing = optional(bool, true)
in_place_rollout = optional(bool, false)
request_rollout = optional(string)
force_rollout = optional(string)
balancer_memory_request = optional(string, "256Mi")
balancer_memory_limit = optional(string, "256Mi")
balancer_cpu_request = optional(string, "100m")
license_key = optional(string)
environmentd_extra_env = optional(list(object({
name = string
value = string
})), [])
environmentd_extra_args = optional(list(object({
name = string
value = string
})), [])
}))
| `[]` | no | | [metrics\_retention\_days](#input\_metrics\_retention\_days) | Number of days to retain CloudWatch metrics | `number` | `7` | no | | [namespace](#input\_namespace) | Namespace for all resources, usually the organization or project name | `string` | n/a | yes | | [network\_id](#input\_network\_id) | The ID of the VPC in which resources will be deployed. Only used if create\_vpc is false. | `string` | `""` | no | diff --git a/examples/simple/main.tf b/examples/simple/main.tf index 3a85adb..81312bf 100644 --- a/examples/simple/main.tf +++ b/examples/simple/main.tf @@ -154,6 +154,10 @@ variable "materialize_instances" { name = string value = string })), []) + environmentd_extra_args = optional(list(object({ + name = string + value = string + })), []) })) default = [] } diff --git a/main.tf b/main.tf index df95f55..599c158 100644 --- a/main.tf +++ b/main.tf @@ -268,6 +268,7 @@ locals { internal_nlb = instance.internal_nlb enable_cross_zone_load_balancing = instance.enable_cross_zone_load_balancing environmentd_extra_env = instance.environmentd_extra_env + environmentd_extra_args = instance.environmentd_extra_args metadata_backend_url = format( "postgres://%s:%s@%s/%s?sslmode=require", diff --git a/variables.tf b/variables.tf index 5898eb4..dff02ef 100644 --- a/variables.tf +++ b/variables.tf @@ -371,6 +371,10 @@ variable "materialize_instances" { name = string value = string })), []) + environmentd_extra_args = optional(list(object({ + name = string + value = string + })), []) })) default = [] From 8051e4e47d990aad29df545c4b71f49a94dd3e56 Mon Sep 17 00:00:00 2001 From: Bobby Iliev Date: Fri, 16 May 2025 17:34:27 +0300 Subject: [PATCH 3/6] Switch extra args to list --- examples/simple/main.tf | 5 +---- variables.tf | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/examples/simple/main.tf b/examples/simple/main.tf index 81312bf..a583666 100644 --- a/examples/simple/main.tf +++ b/examples/simple/main.tf @@ -154,10 +154,7 @@ variable "materialize_instances" { name = string value = string })), []) - environmentd_extra_args = optional(list(object({ - name = string - value = string - })), []) + environmentd_extra_args = optional(list(string), []) })) default = [] } diff --git a/variables.tf b/variables.tf index dff02ef..5b25ee4 100644 --- a/variables.tf +++ b/variables.tf @@ -371,10 +371,7 @@ variable "materialize_instances" { name = string value = string })), []) - environmentd_extra_args = optional(list(object({ - name = string - value = string - })), []) + environmentd_extra_args = optional(list(string), []) })) default = [] From 6a9a27a4e92b81a1c189427590f7e8eaca147eef Mon Sep 17 00:00:00 2001 From: Bobby Iliev Date: Fri, 16 May 2025 17:39:54 +0300 Subject: [PATCH 4/6] Bump helm module to latest version --- README.md | 4 ++-- main.tf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a613c8c..f903348 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ disk_support_config = { | [eks](#module\_eks) | ./modules/eks | n/a | | [networking](#module\_networking) | ./modules/networking | n/a | | [nlb](#module\_nlb) | ./modules/nlb | n/a | -| [operator](#module\_operator) | github.com/MaterializeInc/terraform-helm-materialize | v0.1.14 | +| [operator](#module\_operator) | github.com/MaterializeInc/terraform-helm-materialize | v0.1.15 | | [storage](#module\_storage) | ./modules/storage | n/a | ## Resources @@ -170,7 +170,7 @@ disk_support_config = { | [install\_metrics\_server](#input\_install\_metrics\_server) | Whether to install the metrics-server for the Materialize Console | `bool` | `true` | no | | [kubernetes\_namespace](#input\_kubernetes\_namespace) | The Kubernetes namespace for the Materialize resources | `string` | `"materialize-environment"` | no | | [log\_group\_name\_prefix](#input\_log\_group\_name\_prefix) | Prefix for the CloudWatch log group name (will be combined with environment name) | `string` | `"materialize"` | no | -| [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. |
list(object({
name = string
namespace = optional(string)
database_name = string
environmentd_version = optional(string)
cpu_request = optional(string, "1")
memory_request = optional(string, "1Gi")
memory_limit = optional(string, "1Gi")
create_database = optional(bool, true)
create_nlb = optional(bool, true)
internal_nlb = optional(bool, true)
enable_cross_zone_load_balancing = optional(bool, true)
in_place_rollout = optional(bool, false)
request_rollout = optional(string)
force_rollout = optional(string)
balancer_memory_request = optional(string, "256Mi")
balancer_memory_limit = optional(string, "256Mi")
balancer_cpu_request = optional(string, "100m")
license_key = optional(string)
environmentd_extra_env = optional(list(object({
name = string
value = string
})), [])
environmentd_extra_args = optional(list(object({
name = string
value = string
})), [])
}))
| `[]` | no | +| [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. |
list(object({
name = string
namespace = optional(string)
database_name = string
environmentd_version = optional(string)
cpu_request = optional(string, "1")
memory_request = optional(string, "1Gi")
memory_limit = optional(string, "1Gi")
create_database = optional(bool, true)
create_nlb = optional(bool, true)
internal_nlb = optional(bool, true)
enable_cross_zone_load_balancing = optional(bool, true)
in_place_rollout = optional(bool, false)
request_rollout = optional(string)
force_rollout = optional(string)
balancer_memory_request = optional(string, "256Mi")
balancer_memory_limit = optional(string, "256Mi")
balancer_cpu_request = optional(string, "100m")
license_key = optional(string)
environmentd_extra_env = optional(list(object({
name = string
value = string
})), [])
environmentd_extra_args = optional(list(string), [])
}))
| `[]` | no | | [metrics\_retention\_days](#input\_metrics\_retention\_days) | Number of days to retain CloudWatch metrics | `number` | `7` | no | | [namespace](#input\_namespace) | Namespace for all resources, usually the organization or project name | `string` | n/a | yes | | [network\_id](#input\_network\_id) | The ID of the VPC in which resources will be deployed. Only used if create\_vpc is false. | `string` | `""` | no | diff --git a/main.tf b/main.tf index 599c158..dd45cd0 100644 --- a/main.tf +++ b/main.tf @@ -128,7 +128,7 @@ module "certificates" { } module "operator" { - source = "github.com/MaterializeInc/terraform-helm-materialize?ref=v0.1.14" + source = "github.com/MaterializeInc/terraform-helm-materialize?ref=v0.1.15" count = var.install_materialize_operator ? 1 : 0 From dd1998b110c45edc5288a3bf1bfdb5470a76fde3 Mon Sep 17 00:00:00 2001 From: Bobby Iliev Date: Mon, 19 May 2025 16:10:08 +0300 Subject: [PATCH 5/6] Add docs for envd extra args and vars --- README.md | 33 +++++++++++++++++++++++++++++++++ docs/header.md | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/README.md b/README.md index f903348..ff35704 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,39 @@ disk_support_config = { } ``` +## `materialize_instances` variable + +The `materialize_instances` variable is a list of objects that define the configuration for each Materialize instance. + +### `environmentd_extra_env` + +Optional list of extra environment variables to pass to the `environmentd` container. This allows you to pass any additional configuration supported by Materialize. + +Each entry should be an object with `name` and `value` fields: + +```hcl +environmentd_extra_env = [ + { + name = "MZ_LOG_FILTER" + value = "materialized::coord=debug" + } +] +``` + +### `environmentd_extra_args` + +Optional list of additional command-line arguments to pass to the `environmentd` container. This can be used to override default system parameters or enable specific features. + +```hcl +environmentd_extra_args = [ + "--system-parameter-default=max_clusters=1000", + "--system-parameter-default=max_connections=1000", + "--system-parameter-default=max_tables=1000", +] +``` + +These flags configure default limits for clusters, connections, and tables. You can provide any supported arguments [here](https://materialize.com/docs/sql/alter-system-set/#other-configuration-parameters). + ## Requirements | Name | Version | diff --git a/docs/header.md b/docs/header.md index 45cc380..fdb0018 100644 --- a/docs/header.md +++ b/docs/header.md @@ -94,3 +94,36 @@ disk_support_config = { } } ``` + +## `materialize_instances` variable + +The `materialize_instances` variable is a list of objects that define the configuration for each Materialize instance. + +### `environmentd_extra_env` + +Optional list of extra environment variables to pass to the `environmentd` container. This allows you to pass any additional configuration supported by Materialize. + +Each entry should be an object with `name` and `value` fields: + +```hcl +environmentd_extra_env = [ + { + name = "MZ_LOG_FILTER" + value = "materialized::coord=debug" + } +] +``` + +### `environmentd_extra_args` + +Optional list of additional command-line arguments to pass to the `environmentd` container. This can be used to override default system parameters or enable specific features. + +```hcl +environmentd_extra_args = [ + "--system-parameter-default=max_clusters=1000", + "--system-parameter-default=max_connections=1000", + "--system-parameter-default=max_tables=1000", +] +``` + +These flags configure default limits for clusters, connections, and tables. You can provide any supported arguments [here](https://materialize.com/docs/sql/alter-system-set/#other-configuration-parameters). From 063896af826617c7489702d957c5146bff42307c Mon Sep 17 00:00:00 2001 From: Bobby Iliev Date: Thu, 12 Jun 2025 15:17:51 +0300 Subject: [PATCH 6/6] Remove extra env var --- README.md | 17 +---------------- docs/header.md | 15 --------------- examples/simple/main.tf | 4 ---- main.tf | 1 - variables.tf | 6 +----- 5 files changed, 2 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index ff35704..64892e7 100644 --- a/README.md +++ b/README.md @@ -100,21 +100,6 @@ disk_support_config = { The `materialize_instances` variable is a list of objects that define the configuration for each Materialize instance. -### `environmentd_extra_env` - -Optional list of extra environment variables to pass to the `environmentd` container. This allows you to pass any additional configuration supported by Materialize. - -Each entry should be an object with `name` and `value` fields: - -```hcl -environmentd_extra_env = [ - { - name = "MZ_LOG_FILTER" - value = "materialized::coord=debug" - } -] -``` - ### `environmentd_extra_args` Optional list of additional command-line arguments to pass to the `environmentd` container. This can be used to override default system parameters or enable specific features. @@ -203,7 +188,7 @@ These flags configure default limits for clusters, connections, and tables. You | [install\_metrics\_server](#input\_install\_metrics\_server) | Whether to install the metrics-server for the Materialize Console | `bool` | `true` | no | | [kubernetes\_namespace](#input\_kubernetes\_namespace) | The Kubernetes namespace for the Materialize resources | `string` | `"materialize-environment"` | no | | [log\_group\_name\_prefix](#input\_log\_group\_name\_prefix) | Prefix for the CloudWatch log group name (will be combined with environment name) | `string` | `"materialize"` | no | -| [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. |
list(object({
name = string
namespace = optional(string)
database_name = string
environmentd_version = optional(string)
cpu_request = optional(string, "1")
memory_request = optional(string, "1Gi")
memory_limit = optional(string, "1Gi")
create_database = optional(bool, true)
create_nlb = optional(bool, true)
internal_nlb = optional(bool, true)
enable_cross_zone_load_balancing = optional(bool, true)
in_place_rollout = optional(bool, false)
request_rollout = optional(string)
force_rollout = optional(string)
balancer_memory_request = optional(string, "256Mi")
balancer_memory_limit = optional(string, "256Mi")
balancer_cpu_request = optional(string, "100m")
license_key = optional(string)
environmentd_extra_env = optional(list(object({
name = string
value = string
})), [])
environmentd_extra_args = optional(list(string), [])
}))
| `[]` | no | +| [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. |
list(object({
name = string
namespace = optional(string)
database_name = string
environmentd_version = optional(string)
cpu_request = optional(string, "1")
memory_request = optional(string, "1Gi")
memory_limit = optional(string, "1Gi")
create_database = optional(bool, true)
create_nlb = optional(bool, true)
internal_nlb = optional(bool, true)
enable_cross_zone_load_balancing = optional(bool, true)
in_place_rollout = optional(bool, false)
request_rollout = optional(string)
force_rollout = optional(string)
balancer_memory_request = optional(string, "256Mi")
balancer_memory_limit = optional(string, "256Mi")
balancer_cpu_request = optional(string, "100m")
license_key = optional(string)
environmentd_extra_args = optional(list(string), [])
}))
| `[]` | no | | [metrics\_retention\_days](#input\_metrics\_retention\_days) | Number of days to retain CloudWatch metrics | `number` | `7` | no | | [namespace](#input\_namespace) | Namespace for all resources, usually the organization or project name | `string` | n/a | yes | | [network\_id](#input\_network\_id) | The ID of the VPC in which resources will be deployed. Only used if create\_vpc is false. | `string` | `""` | no | diff --git a/docs/header.md b/docs/header.md index fdb0018..56edbdb 100644 --- a/docs/header.md +++ b/docs/header.md @@ -99,21 +99,6 @@ disk_support_config = { The `materialize_instances` variable is a list of objects that define the configuration for each Materialize instance. -### `environmentd_extra_env` - -Optional list of extra environment variables to pass to the `environmentd` container. This allows you to pass any additional configuration supported by Materialize. - -Each entry should be an object with `name` and `value` fields: - -```hcl -environmentd_extra_env = [ - { - name = "MZ_LOG_FILTER" - value = "materialized::coord=debug" - } -] -``` - ### `environmentd_extra_args` Optional list of additional command-line arguments to pass to the `environmentd` container. This can be used to override default system parameters or enable specific features. diff --git a/examples/simple/main.tf b/examples/simple/main.tf index a583666..1c8454d 100644 --- a/examples/simple/main.tf +++ b/examples/simple/main.tf @@ -150,10 +150,6 @@ variable "materialize_instances" { balancer_memory_limit = optional(string, "256Mi") balancer_cpu_request = optional(string, "100m") license_key = optional(string) - environmentd_extra_env = optional(list(object({ - name = string - value = string - })), []) environmentd_extra_args = optional(list(string), []) })) default = [] diff --git a/main.tf b/main.tf index dd45cd0..31a3ce6 100644 --- a/main.tf +++ b/main.tf @@ -267,7 +267,6 @@ locals { create_nlb = instance.create_nlb internal_nlb = instance.internal_nlb enable_cross_zone_load_balancing = instance.enable_cross_zone_load_balancing - environmentd_extra_env = instance.environmentd_extra_env environmentd_extra_args = instance.environmentd_extra_args metadata_backend_url = format( diff --git a/variables.tf b/variables.tf index 5b25ee4..91c1d6e 100644 --- a/variables.tf +++ b/variables.tf @@ -367,11 +367,7 @@ variable "materialize_instances" { balancer_memory_limit = optional(string, "256Mi") balancer_cpu_request = optional(string, "100m") license_key = optional(string) - environmentd_extra_env = optional(list(object({ - name = string - value = string - })), []) - environmentd_extra_args = optional(list(string), []) + environmentd_extra_args = optional(list(string), []) })) default = []