Skip to content
This repository was archived by the owner on Jul 30, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 17 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,10 @@ No providers.
| <a name="module_certificates"></a> [certificates](#module\_certificates) | ./modules/certificates | n/a |
| <a name="module_database"></a> [database](#module\_database) | ./modules/database | n/a |
| <a name="module_load_balancers"></a> [load\_balancers](#module\_load\_balancers) | ./modules/load_balancers | n/a |
| <a name="module_materialize_nodepool"></a> [materialize\_nodepool](#module\_materialize\_nodepool) | ./modules/nodepool | n/a |
| <a name="module_networking"></a> [networking](#module\_networking) | ./modules/networking | n/a |
| <a name="module_operator"></a> [operator](#module\_operator) | github.com/MaterializeInc/terraform-helm-materialize | v0.1.35 |
| <a name="module_storage"></a> [storage](#module\_storage) | ./modules/storage | n/a |
| <a name="module_materialize_nodepool"></a> [materialize\_nodepool](#module\_materialize\_nodepool) | ./modules/nodepool | n/a |

## Resources

Expand All @@ -147,34 +147,31 @@ No resources.

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_system_node_pool_vm_size"></a> [system\_node\_pool\_vm\_size](#input\_system\_node\_pool\_vm\_size) | VM size for system node pool | `string` | `"Standard_E4pds_v6"` | no |
| <a name="input_system_node_pool_disk_size_gb"></a> [system\_node\_pool\_disk\_size\_gb](#input\_system\_node\_pool\_disk\_size\_gb) | Disk size in GB for system node pool | `number` | `100` | no |
| <a name="input_system_node_pool_min_nodes"></a> [system\_node\_pool\_min\_nodes](#input\_system\_node\_pool\_min\_nodes) | Minimum number of nodes in system node pool | `number` | `1` | no |
| <a name="input_system_node_pool_max_nodes"></a> [system\_node\_pool\_max\_nodes](#input\_system\_node\_pool\_max\_nodes) | Maximum number of nodes in system node pool | `number` | `4` | no |
| <a name="input_materialize_node_pool_vm_size"></a> [materialize\_node\_pool\_vm\_size](#input\_materialize\_node\_pool\_vm\_size) | VM size for Materialize node pool | `string` | `"Standard_E4pds_v6"` | no |
| <a name="input_materialize_node_pool_disk_size_gb"></a> [materialize\_node\_pool\_disk\_size\_gb](#input\_materialize\_node\_pool\_disk\_size\_gb) | Disk size in GB for Materialize node pool | `number` | `100` | no |
| <a name="input_materialize_node_pool_min_nodes"></a> [materialize\_node\_pool\_min\_nodes](#input\_materialize\_node\_pool\_min\_nodes) | Minimum number of nodes in Materialize node pool | `number` | `1` | no |
| <a name="input_materialize_node_pool_max_nodes"></a> [materialize\_node\_pool\_max\_nodes](#input\_materialize\_node\_pool\_max\_nodes) | Maximum number of nodes in Materialize node pool | `number` | `4` | no |
| <a name="input_cert_manager_chart_version"></a> [cert\_manager\_chart\_version](#input\_cert\_manager\_chart\_version) | Version of the cert-manager helm chart to install. | `string` | `"v1.17.1"` | no |
| <a name="input_cert_manager_install_timeout"></a> [cert\_manager\_install\_timeout](#input\_cert\_manager\_install\_timeout) | Timeout for installing the cert-manager helm chart, in seconds. | `number` | `300` | no |
| <a name="input_cert_manager_namespace"></a> [cert\_manager\_namespace](#input\_cert\_manager\_namespace) | The name of the namespace in which cert-manager is or will be installed. | `string` | `"cert-manager"` | no |
| <a name="input_database_config"></a> [database\_config](#input\_database\_config) | Azure Database for PostgreSQL configuration | <pre>object({<br/> sku_name = optional(string, "GP_Standard_D2s_v3")<br/> postgres_version = optional(string, "15")<br/> password = string<br/> username = optional(string, "materialize")<br/> db_name = optional(string, "materialize")<br/> })</pre> | n/a | yes |
| <a name="input_disk_setup_image"></a> [disk\_setup\_image](#input\_disk\_setup\_image) | Docker image for the disk setup script | `string` | `"materialize/ephemeral-storage-setup-image:v0.4.0"` | no |
| <a name="input_disk_support_config"></a> [disk\_support\_config](#input\_disk\_support\_config) | Advanced configuration for disk support (only used when enable\_disk\_support = true) | <pre>object({<br/> install_openebs = optional(bool, true)<br/> run_disk_setup_script = optional(bool, true)<br/> create_storage_class = optional(bool, true)<br/> openebs_version = optional(string, "4.3.3")<br/> openebs_namespace = optional(string, "openebs")<br/> storage_class_name = optional(string, "openebs-lvm-instance-store-ext4")<br/> })</pre> | `{}` | no |
| <a name="input_enable_disk_support"></a> [enable\_disk\_support](#input\_enable\_disk\_support) | Enable disk support for Materialize using OpenEBS and local SSDs. When enabled, this configures OpenEBS, runs the disk setup script, and creates appropriate storage classes. | `bool` | `true` | no |
| <a name="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 |
| <a name="input_helm_values"></a> [helm\_values](#input\_helm\_values) | Additional Helm values to merge with defaults | `any` | `{}` | no |
| <a name="input_install_cert_manager"></a> [install\_cert\_manager](#input\_install\_cert\_manager) | Whether to install cert-manager. | `bool` | `true` | no |
| <a name="input_install_materialize_operator"></a> [install\_materialize\_operator](#input\_install\_materialize\_operator) | Whether to install the Materialize operator | `bool` | `true` | no |
| <a name="input_location"></a> [location](#input\_location) | The location where resources will be created | `string` | `"eastus2"` | no |
| <a name="input_materialize_instances"></a> [materialize\_instances](#input\_materialize\_instances) | Configuration for Materialize instances | <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_load_balancer = optional(bool, true)<br/> internal_load_balancer = 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, null)<br/> environmentd_extra_args = optional(list(string), [])<br/> }))</pre> | `[]` | no |
| <a name="input_materialize_node_pool_disk_size_gb"></a> [materialize\_node\_pool\_disk\_size\_gb](#input\_materialize\_node\_pool\_disk\_size\_gb) | Disk size in GB for Materialize node pool | `number` | `100` | no |
| <a name="input_materialize_node_pool_max_nodes"></a> [materialize\_node\_pool\_max\_nodes](#input\_materialize\_node\_pool\_max\_nodes) | Maximum number of nodes in Materialize node pool | `number` | `4` | no |
| <a name="input_materialize_node_pool_min_nodes"></a> [materialize\_node\_pool\_min\_nodes](#input\_materialize\_node\_pool\_min\_nodes) | Minimum number of nodes in Materialize node pool | `number` | `1` | no |
| <a name="input_materialize_node_pool_vm_size"></a> [materialize\_node\_pool\_vm\_size](#input\_materialize\_node\_pool\_vm\_size) | VM size for Materialize node pool | `string` | `"Standard_E4pds_v6"` | no |
| <a name="input_namespace"></a> [namespace](#input\_namespace) | Namespace for all resources, usually the organization or project name | `string` | `"materialize"` | no |
| <a name="input_network_config"></a> [network\_config](#input\_network\_config) | Network configuration for the AKS cluster | <pre>object({<br/> vnet_address_space = string<br/> subnet_cidr = string<br/> postgres_subnet_cidr = string<br/> service_cidr = string<br/> docker_bridge_cidr = string<br/> })</pre> | n/a | yes |
| <a name="input_operator_namespace"></a> [operator\_namespace](#input\_operator\_namespace) | Namespace for the Materialize operator | `string` | `"materialize"` | no |
| <a name="input_operator_version"></a> [operator\_version](#input\_operator\_version) | Version of the Materialize operator to install | `string` | `null` | no |
| <a name="input_orchestratord_version"></a> [orchestratord\_version](#input\_orchestratord\_version) | Version of the Materialize orchestrator to install | `string` | `null` | no |
| <a name="input_prefix"></a> [prefix](#input\_prefix) | Prefix to be used for resource names | `string` | `"materialize"` | no |
| <a name="input_resource_group_name"></a> [resource\_group\_name](#input\_resource\_group\_name) | The name of an existing resource group to use | `string` | n/a | yes |
| <a name="input_system_node_pool_disk_size_gb"></a> [system\_node\_pool\_disk\_size\_gb](#input\_system\_node\_pool\_disk\_size\_gb) | Disk size in GB for system node pool | `number` | `100` | no |
| <a name="input_system_node_pool_max_nodes"></a> [system\_node\_pool\_max\_nodes](#input\_system\_node\_pool\_max\_nodes) | Maximum number of nodes in system node pool | `number` | `4` | no |
| <a name="input_system_node_pool_min_nodes"></a> [system\_node\_pool\_min\_nodes](#input\_system\_node\_pool\_min\_nodes) | Minimum number of nodes in system node pool | `number` | `2` | no |
| <a name="input_system_node_pool_vm_size"></a> [system\_node\_pool\_vm\_size](#input\_system\_node\_pool\_vm\_size) | VM size for system node pool | `string` | `"Standard_D2ps_v6"` | no |
| <a name="input_tags"></a> [tags](#input\_tags) | Tags to apply to all resources | `map(string)` | `{}` | no |
| <a name="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 |
| <a name="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 |
Expand Down Expand Up @@ -224,6 +221,14 @@ More advanced TLS support using user-provided CAs or per-Materialize `Issuer`s a

## Upgrade Notes

#### v0.8.0

You must upgrade to at least v0.7.x before upgrading to v0.8.x of this terraform code.

Breaking changes:
* The system node pool is renamed and significantly modified, forcing a recreation.
* Openebs is removed, and with it all support for lgalloc, our legacy spill to disk mechanism.

#### v0.7.0

This is an intermediate version to handle some changes that must be applied in stages.
Expand Down
8 changes: 8 additions & 0 deletions docs/footer.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ More advanced TLS support using user-provided CAs or per-Materialize `Issuer`s a

## Upgrade Notes

#### v0.8.0

You must upgrade to at least v0.7.x before upgrading to v0.8.x of this terraform code.

Breaking changes:
* The system node pool is renamed and significantly modified, forcing a recreation.
* Openebs is removed, and with it all support for lgalloc, our legacy spill to disk mechanism.

#### v0.7.0

This is an intermediate version to handle some changes that must be applied in stages.
Expand Down
4 changes: 2 additions & 2 deletions examples/simple/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ module "materialize" {

materialize_instances = var.materialize_instances

system_node_pool_vm_size = "Standard_E4pds_v6"
system_node_pool_vm_size = "Standard_D2ps_v6"
system_node_pool_disk_size_gb = 100
system_node_pool_min_nodes = 1
system_node_pool_min_nodes = 2
system_node_pool_max_nodes = 2

materialize_node_pool_vm_size = "Standard_E4pds_v6"
Expand Down
36 changes: 1 addition & 35 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,6 @@ locals {
managed_by = "terraform"
module = "materialize"
})

# TODO we can't delete this until we're certain no one is using it
# Disk support configuration
disk_config = {
install_openebs = var.enable_disk_support ? lookup(var.disk_support_config, "install_openebs", true) : false
run_disk_setup_script = var.enable_disk_support ? lookup(var.disk_support_config, "run_disk_setup_script", true) : false
create_storage_class = var.enable_disk_support ? lookup(var.disk_support_config, "create_storage_class", true) : false
openebs_version = lookup(var.disk_support_config, "openebs_version", "4.3.3")
openebs_namespace = lookup(var.disk_support_config, "openebs_namespace", "openebs")
storage_class_name = lookup(var.disk_support_config, "storage_class_name", "openebs-lvm-instance-store-ext4")
storage_class_provisioner = "local.csi.openebs.io"
storage_class_parameters = {
storage = "lvm"
fsType = "ext4"
volgroup = "instance-store-vg"
}
}
}

module "networking" {
Expand Down Expand Up @@ -53,13 +36,6 @@ module "aks" {
min_nodes = var.system_node_pool_min_nodes
max_nodes = var.system_node_pool_max_nodes

# Disk support configuration
enable_disk_setup = local.disk_config.run_disk_setup_script
install_openebs = local.disk_config.install_openebs
openebs_namespace = local.disk_config.openebs_namespace
openebs_version = local.disk_config.openebs_version
disk_setup_image = var.disk_setup_image

tags = local.common_labels
}

Expand All @@ -80,8 +56,7 @@ module "materialize_nodepool" {
max_nodes = var.materialize_node_pool_max_nodes
}

swap_enabled = true
disk_setup_image = var.disk_setup_image
swap_enabled = true

labels = local.common_labels
tags = local.common_labels
Expand Down Expand Up @@ -189,15 +164,6 @@ locals {
}
}
} : {}
# TODO we can't delete this until we're certain no one is using it
storage = var.enable_disk_support ? {
storageClass = {
create = local.disk_config.create_storage_class
name = local.disk_config.storage_class_name
provisioner = local.disk_config.storage_class_provisioner
parameters = local.disk_config.storage_class_parameters
}
} : {}
}

merged_helm_values = provider::deepmerge::mergo(local.default_helm_values, var.helm_values)
Expand Down
Loading