You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
rename node groups, always enable materialize node group
* replace mz node group in eks module with system node group
* this is a replace, not a rename, due to limitations on `moved`
blocks.
* rename swap node group to materialize node group
* split up variables for different node groups
* remove some vars that should never be modified
* always enable materialize node group
* default to swap enabled
* move to bottlerocket on both node groups
* remove openebs and support for lgalloc scratch-fs
@@ -175,11 +142,9 @@ These flags configure default limits for clusters, connections, and tables. You
175
142
| <aname="input_db_instance_class"></a> [db\_instance\_class](#input\_db\_instance\_class)| Instance class for the RDS instance. This is used for concensus and metadata and is general not bottlnecked by memory or disk. Recomended instance family m7i, m6i, m7g, and m8g |`string`|`"db.m6i.large"`| no |
176
143
| <aname="input_db_max_allocated_storage"></a> [db\_max\_allocated\_storage](#input\_db\_max\_allocated\_storage)| Maximum storage for autoscaling (in GB) |`number`|`100`| no |
177
144
| <aname="input_db_multi_az"></a> [db\_multi\_az](#input\_db\_multi\_az)| Enable multi-AZ deployment for RDS |`bool`|`false`| no |
| <aname="input_enable_bucket_encryption"></a> [enable\_bucket\_encryption](#input\_enable\_bucket\_encryption)| Enable server-side encryption for the S3 bucket |`bool`|`true`| no |
180
146
| <aname="input_enable_bucket_versioning"></a> [enable\_bucket\_versioning](#input\_enable\_bucket\_versioning)| Enable versioning for the S3 bucket |`bool`|`true`| no |
181
147
| <aname="input_enable_cluster_creator_admin_permissions"></a> [enable\_cluster\_creator\_admin\_permissions](#input\_enable\_cluster\_creator\_admin\_permissions)| To add the current caller identity as an administrator |`bool`|`true`| no |
182
-
| <aname="input_enable_disk_support"></a> [enable\_disk\_support](#input\_enable\_disk\_support)| Enable disk support for Materialize using OpenEBS and NVMe instance storage. When enabled, this configures OpenEBS, runs the disk setup script for NVMe devices, and creates appropriate storage classes. |`bool`|`true`| no |
183
148
| <aname="input_enable_monitoring"></a> [enable\_monitoring](#input\_enable\_monitoring)| Enable CloudWatch monitoring |`bool`|`true`| no |
| <aname="input_helm_chart"></a> [helm\_chart](#input\_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 |
@@ -191,17 +156,15 @@ These flags configure default limits for clusters, connections, and tables. You
191
156
| <aname="input_kubernetes_namespace"></a> [kubernetes\_namespace](#input\_kubernetes\_namespace)| The Kubernetes namespace for the Materialize resources |`string`|`"materialize-environment"`| no |
192
157
| <aname="input_log_group_name_prefix"></a> [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 |
193
158
| <a name="input_materialize_instances"></a> [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances. Due to limitations in Terraform, `materialize_instances` cannot be defined on the first `terraform apply`. | <pre>list(object({<br/> name = string<br/> namespace = optional(string)<br/> database_name = string<br/> environmentd_version = optional(string)<br/> cpu_request = optional(string, "1")<br/> memory_request = optional(string, "1Gi")<br/> memory_limit = optional(string, "1Gi")<br/> create_database = optional(bool, true)<br/> create_nlb = optional(bool, true)<br/> internal_nlb = optional(bool, true)<br/> enable_cross_zone_load_balancing = optional(bool, true)<br/> in_place_rollout = optional(bool, false)<br/> request_rollout = optional(string)<br/> force_rollout = optional(string)<br/> balancer_memory_request = optional(string, "256Mi")<br/> balancer_memory_limit = optional(string, "256Mi")<br/> balancer_cpu_request = optional(string, "100m")<br/> license_key = optional(string)<br/> authenticator_kind = optional(string, "None")<br/> external_login_password_mz_system = optional(string)<br/> environmentd_extra_args = optional(list(string), [])<br/> }))</pre> | `[]` | no |
159
+
| <aname="input_materialize_node_group_desired_size"></a> [materialize\_node\_group\_desired\_size](#input\_materialize\_node\_group\_desired\_size)| Desired number of worker nodes |`number`|`2`| no |
160
+
| <aname="input_materialize_node_group_instance_types"></a> [materialize\_node\_group\_instance\_types](#input\_materialize\_node\_group\_instance\_types)| Instance types for worker nodes.<br/><br/>Recommended Configuration for Running Materialize with disk:<br/>- Tested instance types: `r6gd`, `r7gd` families (ARM-based Graviton instances)<br/>- Enable disk setup when using `r7gd`<br/>- Note: Ensure instance store volumes are available and attached to the nodes for optimal performance with disk-based workloads. |`list(string)`| <pre>[<br/> "r7gd.2xlarge"<br/>]</pre> | no |
161
+
| <aname="input_materialize_node_group_max_size"></a> [materialize\_node\_group\_max\_size](#input\_materialize\_node\_group\_max\_size)| Maximum number of worker nodes |`number`|`4`| no |
162
+
| <aname="input_materialize_node_group_min_size"></a> [materialize\_node\_group\_min\_size](#input\_materialize\_node\_group\_min\_size)| Minimum number of worker nodes |`number`|`1`| no |
194
163
| <aname="input_metrics_retention_days"></a> [metrics\_retention\_days](#input\_metrics\_retention\_days)| Number of days to retain CloudWatch metrics |`number`|`7`| no |
195
164
| <aname="input_namespace"></a> [namespace](#input\_namespace)| Namespace for all resources, usually the organization or project name |`string`| n/a | yes |
196
165
| <aname="input_network_id"></a> [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 |
197
166
| <aname="input_network_private_subnet_ids"></a> [network\_private\_subnet\_ids](#input\_network\_private\_subnet\_ids)| A list of private subnet IDs in the VPC. Only used if create\_vpc is false. |`list(string)`|`[]`| no |
198
167
| <aname="input_network_public_subnet_ids"></a> [network\_public\_subnet\_ids](#input\_network\_public\_subnet\_ids)| A list of public subnet IDs in the VPC. Only used if create\_vpc is false. |`list(string)`|`[]`| no |
199
-
| <aname="input_node_group_ami_type"></a> [node\_group\_ami\_type](#input\_node\_group\_ami\_type)| AMI type for the node group |`string`|`"AL2023_ARM_64_STANDARD"`| no |
200
-
| <aname="input_node_group_capacity_type"></a> [node\_group\_capacity\_type](#input\_node\_group\_capacity\_type)| Capacity type for worker nodes (ON\_DEMAND or SPOT) |`string`|`"ON_DEMAND"`| no |
201
-
| <aname="input_node_group_desired_size"></a> [node\_group\_desired\_size](#input\_node\_group\_desired\_size)| Desired number of worker nodes |`number`|`2`| no |
202
-
| <aname="input_node_group_instance_types"></a> [node\_group\_instance\_types](#input\_node\_group\_instance\_types)| Instance types for worker nodes.<br/><br/>Recommended Configuration for Running Materialize with disk:<br/>- Tested instance types: `r6gd`, `r7gd` families (ARM-based Graviton instances)<br/>- Enable disk setup when using `r7gd`<br/>- Note: Ensure instance store volumes are available and attached to the nodes for optimal performance with disk-based workloads. |`list(string)`| <pre>[<br/> "r7gd.2xlarge"<br/>]</pre> | no |
203
-
| <aname="input_node_group_max_size"></a> [node\_group\_max\_size](#input\_node\_group\_max\_size)| Maximum number of worker nodes |`number`|`4`| no |
204
-
| <aname="input_node_group_min_size"></a> [node\_group\_min\_size](#input\_node\_group\_min\_size)| Minimum number of worker nodes |`number`|`1`| no |
205
168
| <aname="input_operator_namespace"></a> [operator\_namespace](#input\_operator\_namespace)| Namespace for the Materialize operator |`string`|`"materialize"`| no |
206
169
| <aname="input_operator_version"></a> [operator\_version](#input\_operator\_version)| Version of the Materialize operator to install |`string`|`null`| no |
207
170
| <aname="input_orchestratord_version"></a> [orchestratord\_version](#input\_orchestratord\_version)| Version of the Materialize orchestrator to install |`string`|`null`| no |
@@ -210,7 +173,11 @@ These flags configure default limits for clusters, connections, and tables. You
210
173
| <aname="input_public_subnet_cidrs"></a> [public\_subnet\_cidrs](#input\_public\_subnet\_cidrs)| CIDR blocks for public subnets |`list(string)`| <pre>[<br/> "10.0.101.0/24",<br/> "10.0.102.0/24",<br/> "10.0.103.0/24"<br/>]</pre> | no |
211
174
| <aname="input_service_account_name"></a> [service\_account\_name](#input\_service\_account\_name)| Name of the service account |`string`|`"12345678-1234-1234-1234-123456789012"`| no |
212
175
| <aname="input_single_nat_gateway"></a> [single\_nat\_gateway](#input\_single\_nat\_gateway)| Use a single NAT Gateway for all private subnets |`bool`|`false`| no |
213
-
| <aname="input_swap_enabled"></a> [swap\_enabled](#input\_swap\_enabled)| Enable swap for Materialize. When enabled, this configures swap on a new nodepool, and adds it to the clusterd node selectors. |`bool`|`false`| no |
176
+
| <aname="input_swap_enabled"></a> [swap\_enabled](#input\_swap\_enabled)| Enable swap for Materialize. When enabled, this configures swap on a new nodepool, and adds it to the clusterd node selectors. |`bool`|`true`| no |
177
+
| <aname="input_system_node_group_desired_size"></a> [system\_node\_group\_desired\_size](#input\_system\_node\_group\_desired\_size)| Desired number of worker nodes |`number`|`2`| no |
178
+
| <aname="input_system_node_group_instance_types"></a> [system\_node\_group\_instance\_types](#input\_system\_node\_group\_instance\_types)| Instance types for system nodes. |`list(string)`| <pre>[<br/> "r7g.xlarge"<br/>]</pre> | no |
179
+
| <aname="input_system_node_group_max_size"></a> [system\_node\_group\_max\_size](#input\_system\_node\_group\_max\_size)| Maximum number of worker nodes |`number`|`4`| no |
180
+
| <aname="input_system_node_group_min_size"></a> [system\_node\_group\_min\_size](#input\_system\_node\_group\_min\_size)| Minimum number of worker nodes |`number`|`1`| no |
214
181
| <aname="input_tags"></a> [tags](#input\_tags)| Default tags to apply to all resources |`map(string)`| <pre>{<br/> "Environment": "dev",<br/> "Project": "materialize",<br/> "Terraform": "true"<br/>}</pre> | no |
215
182
| <aname="input_use_local_chart"></a> [use\_local\_chart](#input\_use\_local\_chart)| Whether to use a local chart instead of one from a repository |`bool`|`false`| no |
216
183
| <aname="input_use_self_signed_cluster_issuer"></a> [use\_self\_signed\_cluster\_issuer](#input\_use\_self\_signed\_cluster\_issuer)| Whether to install and use a self-signed ClusterIssuer for TLS. To work around limitations in Terraform, this will be treated as `false` if no materialize instances are defined. |`bool`|`true`| no |
@@ -263,6 +230,19 @@ More advanced TLS support using user-provided CAs or per-Materialize `Issuer`s a
263
230
264
231
## Upgrade Notes
265
232
233
+
#### v0.7.0
234
+
235
+
Breaking changes:
236
+
* Swap is enabled by default.
237
+
* Support for lgalloc, our legacy spill to disk mechanism, is removed.
238
+
* We now always use two node groups, one for system workloads and one for Materialize workloads.
239
+
* Variables for configuring these node groups have been renamed, so they may be configured separately.
240
+
* Both node groups are now locked to Bottlerocket AMIs and ON\_DEMAND scheduling.
241
+
242
+
You must upgrade to at least v0.6.x before upgrading to v0.7.0 of this terraform code.
243
+
244
+
It is strongly recommended to have enabled swap on v0.6.x before upgrading to v0.7.0 or higher.
Copy file name to clipboardExpand all lines: docs/operator-setup.md
-36Lines changed: 0 additions & 36 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,42 +24,6 @@ Verify the connection:
24
24
kubectl get nodes
25
25
```
26
26
27
-
## (Optional) Storage Configuration
28
-
29
-
The Materialize Operator requires fast, locally-attached NVMe storage for optimal performance. We'll set up OpenEBS with LVM Local PV for managing local volumes.
TODO: Add more detailed instructions for setting up LVM on Bottlerocket nodes.
51
-
52
-
If you're using the recommended Bottlerocket AMI with the Terraform module, the LVM configuration needs to be done through the Bottlerocket bootstrap container. This is automatically handled by the EKS module using the provided user data script.
0 commit comments