{"id":28952837,"url":"https://github.com/materializeinc/terraform-azurerm-materialize","last_synced_at":"2026-06-26T23:00:33.189Z","repository":{"id":277285211,"uuid":"904259409","full_name":"MaterializeInc/terraform-azurerm-materialize","owner":"MaterializeInc","description":"Terraform module for deploying the required Azure infrastructure components for Materialize","archived":false,"fork":false,"pushed_at":"2026-06-12T14:04:28.000Z","size":400,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T00:06:32.525Z","etag":null,"topics":["azure","materialize","terraform"],"latest_commit_sha":null,"homepage":"https://materialize.com/docs/installation/install-on-azure/","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaterializeInc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-16T14:47:50.000Z","updated_at":"2026-06-12T14:04:55.000Z","dependencies_parsed_at":"2025-02-13T06:11:28.376Z","dependency_job_id":"dfb278f2-ab45-4456-be6f-a235600d31c6","html_url":"https://github.com/MaterializeInc/terraform-azurerm-materialize","commit_stats":null,"previous_names":["materializeinc/terraform-azurerm-materialize"],"tags_count":74,"template":false,"template_full_name":null,"purl":"pkg:github/MaterializeInc/terraform-azurerm-materialize","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-azurerm-materialize","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-azurerm-materialize/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-azurerm-materialize/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-azurerm-materialize/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaterializeInc","download_url":"https://codeload.github.com/MaterializeInc/terraform-azurerm-materialize/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-azurerm-materialize/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34835779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","materialize","terraform"],"created_at":"2025-06-23T17:30:48.326Z","updated_at":"2026-06-26T23:00:33.183Z","avatar_url":"https://github.com/MaterializeInc.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- BEGIN_TF_DOCS --\u003e\n\u003e [!NOTE]\n\u003e A newer module is available at [materialize-terraform-self-managed](https://github.com/MaterializeInc/materialize-terraform-self-managed). It takes a more modular approach so you can pick the pieces you need. If you would like to move over, the [Azure migration example](https://github.com/MaterializeInc/materialize-terraform-self-managed/tree/main/azure/examples/migration) is a good starting point.\n\n# Materialize on Azure\n\nTerraform module for deploying Materialize on Azure with all required infrastructure components.\n\nThis module sets up:\n- AKS cluster for Materialize workloads\n- Azure Database for PostgreSQL Flexible Server for metadata storage\n- Azure Blob Storage for persistence\n- Required networking and security configurations\n- Managed identities with proper RBAC permissions\n\n\u003e [!WARNING]\n\u003e This module is intended for demonstration/evaluation purposes as well as for serving as a template when building your own production deployment of Materialize.\n\u003e\n\u003e This module should not be directly relied upon for production deployments: **future releases of the module will contain breaking changes.** Instead, to use as a starting point for your own production deployment, either:\n\u003e - Fork this repo and pin to a specific version, or\n\u003e - Use the code as a reference when developing your own deployment.\n\nThe module has been tested with:\n- AKS version 1.28\n- PostgreSQL 15\n- terraform-helm-materialize v0.1.12 (Materialize Operator v25.1.7)\n\n## Setup Notes:\n\nThis module requires active Azure credentials in your environment, either set up through environment variables containing the required keys or by logging in with the Azure CLI using:\n\n```sh\naz login\n```\n\nYou also need to set an Azure subscription ID in the `subscription_id` variable or set the `ARM_SUBSCRIPTION_ID` environment variable, eg:\n\n```sh\nexport ARM_SUBSCRIPTION_ID=\"your-subscription-id\"\n```\n\nAdditionally, this module runs a Python script to generate Azure SAS tokens for the storage account. This requires **Python 3.12 or greater**.\n\n### Installing Dependencies\n\nBefore running the module, ensure you have the necessary Python dependencies installed:\n\n1. Install Python 3.12+ if you haven't already.\n2. Install the required dependencies using `pip`:\n\n    ```sh\n    pip install -r requirements.txt\n    ```\n\n    Or alternatively, you can install the dependencies manually:\n\n    ```sh\n    pip install azure-identity azure-storage-blob azure-keyvault-secrets azure-mgmt-storage\n    ```\n\nIf you are using a virtual environment, you can set it up as follows:\n\n```sh\npython -m venv venv\nsource venv/bin/activate  # On macOS/Linux\nvenv\\Scripts\\activate  # On Windows\npip install -r requirements.txt\n```\n\nThis will install the required Python packages in a virtual environment.\n\n## Resource Group\n\nThis module requires an existing Azure Resource Group. You can either:\n\n1. Create one with Terraform before running this module:\n\n    ```hcl\n    resource \"azurerm_resource_group\" \"materialize\" {\n      name     = var.resource_group_name\n      location = var.location\n    }\n    ```\n\n    Then set the `resource_group_name` variable in your `terraform.tfvars` file:\n\n    ```hcl\n    resource_group_name = \"your-desired-rg-name\"\n    ```\n\n2. Use an existing one by just setting the name in your `terraform.tfvars` file:\n\n    ```hcl\n    resource_group_name = \"your-existing-rg\"\n    ```\n\n### Advanced Configuration\n\n## `materialize_instances` variable\n\nThe `materialize_instances` variable is a list of objects that define the configuration for each Materialize instance.\n\n### `environmentd_extra_args`\n\nOptional 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.\n\n```hcl\nenvironmentd_extra_args = [\n  \"--system-parameter-default=max_clusters=1000\",\n  \"--system-parameter-default=max_connections=1000\",\n  \"--system-parameter-default=max_tables=1000\",\n]\n```\n\nThese 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).\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.0 |\n| \u003ca name=\"requirement_azuread\"\u003e\u003c/a\u003e [azuread](#requirement\\_azuread) | \u003e= 2.45.0 |\n| \u003ca name=\"requirement_azurerm\"\u003e\u003c/a\u003e [azurerm](#requirement\\_azurerm) | \u003e= 3.75.0 |\n| \u003ca name=\"requirement_deepmerge\"\u003e\u003c/a\u003e [deepmerge](#requirement\\_deepmerge) | ~\u003e 1.0 |\n| \u003ca name=\"requirement_helm\"\u003e\u003c/a\u003e [helm](#requirement\\_helm) | ~\u003e 2.0 |\n| \u003ca name=\"requirement_kubernetes\"\u003e\u003c/a\u003e [kubernetes](#requirement\\_kubernetes) | ~\u003e 2.0 |\n\n## Providers\n\nNo providers.\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_aks\"\u003e\u003c/a\u003e [aks](#module\\_aks) | ./modules/aks | n/a |\n| \u003ca name=\"module_certificates\"\u003e\u003c/a\u003e [certificates](#module\\_certificates) | ./modules/certificates | n/a |\n| \u003ca name=\"module_database\"\u003e\u003c/a\u003e [database](#module\\_database) | ./modules/database | n/a |\n| \u003ca name=\"module_load_balancers\"\u003e\u003c/a\u003e [load\\_balancers](#module\\_load\\_balancers) | ./modules/load_balancers | n/a |\n| \u003ca name=\"module_materialize_nodepool\"\u003e\u003c/a\u003e [materialize\\_nodepool](#module\\_materialize\\_nodepool) | ./modules/nodepool | n/a |\n| \u003ca name=\"module_networking\"\u003e\u003c/a\u003e [networking](#module\\_networking) | ./modules/networking | n/a |\n| \u003ca name=\"module_operator\"\u003e\u003c/a\u003e [operator](#module\\_operator) | github.com/MaterializeInc/terraform-helm-materialize | v0.1.72 |\n| \u003ca name=\"module_storage\"\u003e\u003c/a\u003e [storage](#module\\_storage) | ./modules/storage | n/a |\n\n## Resources\n\nNo resources.\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_cert_manager_chart_version\"\u003e\u003c/a\u003e [cert\\_manager\\_chart\\_version](#input\\_cert\\_manager\\_chart\\_version) | Version of the cert-manager helm chart to install. | `string` | `\"v1.17.1\"` | no |\n| \u003ca name=\"input_cert_manager_install_timeout\"\u003e\u003c/a\u003e [cert\\_manager\\_install\\_timeout](#input\\_cert\\_manager\\_install\\_timeout) | Timeout for installing the cert-manager helm chart, in seconds. | `number` | `300` | no |\n| \u003ca name=\"input_cert_manager_namespace\"\u003e\u003c/a\u003e [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 |\n| \u003ca name=\"input_database_config\"\u003e\u003c/a\u003e [database\\_config](#input\\_database\\_config) | Azure Database for PostgreSQL configuration | \u003cpre\u003eobject({\u003cbr/\u003e    sku_name         = optional(string, \"GP_Standard_D2s_v3\")\u003cbr/\u003e    postgres_version = optional(string, \"15\")\u003cbr/\u003e    password         = string\u003cbr/\u003e    username         = optional(string, \"materialize\")\u003cbr/\u003e    db_name          = optional(string, \"materialize\")\u003cbr/\u003e  })\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_helm_chart\"\u003e\u003c/a\u003e [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 |\n| \u003ca name=\"input_helm_values\"\u003e\u003c/a\u003e [helm\\_values](#input\\_helm\\_values) | Additional Helm values to merge with defaults | `any` | `{}` | no |\n| \u003ca name=\"input_install_cert_manager\"\u003e\u003c/a\u003e [install\\_cert\\_manager](#input\\_install\\_cert\\_manager) | Whether to install cert-manager. | `bool` | `true` | no |\n| \u003ca name=\"input_install_materialize_operator\"\u003e\u003c/a\u003e [install\\_materialize\\_operator](#input\\_install\\_materialize\\_operator) | Whether to install the Materialize operator | `bool` | `true` | no |\n| \u003ca name=\"input_location\"\u003e\u003c/a\u003e [location](#input\\_location) | The location where resources will be created | `string` | `\"eastus2\"` | no |\n| \u003ca name=\"input_materialize_instances\"\u003e\u003c/a\u003e [materialize\\_instances](#input\\_materialize\\_instances) | Configuration for Materialize instances | \u003cpre\u003elist(object({\u003cbr/\u003e    name                              = string\u003cbr/\u003e    namespace                         = optional(string)\u003cbr/\u003e    database_name                     = string\u003cbr/\u003e    environmentd_version              = optional(string)\u003cbr/\u003e    cpu_request                       = optional(string, \"1\")\u003cbr/\u003e    memory_request                    = optional(string, \"1Gi\")\u003cbr/\u003e    memory_limit                      = optional(string, \"1Gi\")\u003cbr/\u003e    create_database                   = optional(bool, true)\u003cbr/\u003e    create_load_balancer              = optional(bool, true)\u003cbr/\u003e    internal_load_balancer            = optional(bool, true)\u003cbr/\u003e    in_place_rollout                  = optional(bool, false)\u003cbr/\u003e    request_rollout                   = optional(string)\u003cbr/\u003e    force_rollout                     = optional(string)\u003cbr/\u003e    balancer_memory_request           = optional(string, \"256Mi\")\u003cbr/\u003e    balancer_memory_limit             = optional(string, \"256Mi\")\u003cbr/\u003e    balancer_cpu_request              = optional(string, \"100m\")\u003cbr/\u003e    license_key                       = optional(string)\u003cbr/\u003e    authenticator_kind                = optional(string, \"None\")\u003cbr/\u003e    external_login_password_mz_system = optional(string, null)\u003cbr/\u003e    environmentd_extra_args           = optional(list(string), [])\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_materialize_node_pool_disk_size_gb\"\u003e\u003c/a\u003e [materialize\\_node\\_pool\\_disk\\_size\\_gb](#input\\_materialize\\_node\\_pool\\_disk\\_size\\_gb) | Disk size in GB for Materialize node pool | `number` | `100` | no |\n| \u003ca name=\"input_materialize_node_pool_max_nodes\"\u003e\u003c/a\u003e [materialize\\_node\\_pool\\_max\\_nodes](#input\\_materialize\\_node\\_pool\\_max\\_nodes) | Maximum number of nodes in Materialize node pool | `number` | `4` | no |\n| \u003ca name=\"input_materialize_node_pool_min_nodes\"\u003e\u003c/a\u003e [materialize\\_node\\_pool\\_min\\_nodes](#input\\_materialize\\_node\\_pool\\_min\\_nodes) | Minimum number of nodes in Materialize node pool | `number` | `1` | no |\n| \u003ca name=\"input_materialize_node_pool_vm_size\"\u003e\u003c/a\u003e [materialize\\_node\\_pool\\_vm\\_size](#input\\_materialize\\_node\\_pool\\_vm\\_size) | VM size for Materialize node pool | `string` | `\"Standard_E4pds_v6\"` | no |\n| \u003ca name=\"input_namespace\"\u003e\u003c/a\u003e [namespace](#input\\_namespace) | Namespace for all resources, usually the organization or project name | `string` | `\"materialize\"` | no |\n| \u003ca name=\"input_network_config\"\u003e\u003c/a\u003e [network\\_config](#input\\_network\\_config) | Network configuration for the AKS cluster | \u003cpre\u003eobject({\u003cbr/\u003e    vnet_address_space   = string\u003cbr/\u003e    subnet_cidr          = string\u003cbr/\u003e    postgres_subnet_cidr = string\u003cbr/\u003e    service_cidr         = string\u003cbr/\u003e    docker_bridge_cidr   = string\u003cbr/\u003e  })\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_operator_namespace\"\u003e\u003c/a\u003e [operator\\_namespace](#input\\_operator\\_namespace) | Namespace for the Materialize operator | `string` | `\"materialize\"` | no |\n| \u003ca name=\"input_operator_version\"\u003e\u003c/a\u003e [operator\\_version](#input\\_operator\\_version) | Version of the Materialize operator to install | `string` | `null` | no |\n| \u003ca name=\"input_orchestratord_version\"\u003e\u003c/a\u003e [orchestratord\\_version](#input\\_orchestratord\\_version) | Version of the Materialize orchestrator to install | `string` | `null` | no |\n| \u003ca name=\"input_prefix\"\u003e\u003c/a\u003e [prefix](#input\\_prefix) | Prefix to be used for resource names | `string` | `\"materialize\"` | no |\n| \u003ca name=\"input_resource_group_name\"\u003e\u003c/a\u003e [resource\\_group\\_name](#input\\_resource\\_group\\_name) | The name of an existing resource group to use | `string` | n/a | yes |\n| \u003ca name=\"input_system_node_pool_disk_size_gb\"\u003e\u003c/a\u003e [system\\_node\\_pool\\_disk\\_size\\_gb](#input\\_system\\_node\\_pool\\_disk\\_size\\_gb) | Disk size in GB for system node pool | `number` | `100` | no |\n| \u003ca name=\"input_system_node_pool_max_nodes\"\u003e\u003c/a\u003e [system\\_node\\_pool\\_max\\_nodes](#input\\_system\\_node\\_pool\\_max\\_nodes) | Maximum number of nodes in system node pool | `number` | `4` | no |\n| \u003ca name=\"input_system_node_pool_min_nodes\"\u003e\u003c/a\u003e [system\\_node\\_pool\\_min\\_nodes](#input\\_system\\_node\\_pool\\_min\\_nodes) | Minimum number of nodes in system node pool | `number` | `2` | no |\n| \u003ca name=\"input_system_node_pool_vm_size\"\u003e\u003c/a\u003e [system\\_node\\_pool\\_vm\\_size](#input\\_system\\_node\\_pool\\_vm\\_size) | VM size for system node pool | `string` | `\"Standard_D2ps_v6\"` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | Tags to apply to all resources | `map(string)` | `{}` | no |\n| \u003ca name=\"input_use_local_chart\"\u003e\u003c/a\u003e [use\\_local\\_chart](#input\\_use\\_local\\_chart) | Whether to use a local chart instead of one from a repository | `bool` | `false` | no |\n| \u003ca name=\"input_use_self_signed_cluster_issuer\"\u003e\u003c/a\u003e [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 |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_aks_cluster\"\u003e\u003c/a\u003e [aks\\_cluster](#output\\_aks\\_cluster) | AKS cluster details |\n| \u003ca name=\"output_connection_strings\"\u003e\u003c/a\u003e [connection\\_strings](#output\\_connection\\_strings) | Formatted connection strings for Materialize |\n| \u003ca name=\"output_database\"\u003e\u003c/a\u003e [database](#output\\_database) | Azure Database for PostgreSQL details |\n| \u003ca name=\"output_identities\"\u003e\u003c/a\u003e [identities](#output\\_identities) | Managed Identity details |\n| \u003ca name=\"output_kube_config\"\u003e\u003c/a\u003e [kube\\_config](#output\\_kube\\_config) | The kube\\_config for the AKS cluster |\n| \u003ca name=\"output_kube_config_raw\"\u003e\u003c/a\u003e [kube\\_config\\_raw](#output\\_kube\\_config\\_raw) | The kube\\_config for the AKS cluster |\n| \u003ca name=\"output_load_balancer_details\"\u003e\u003c/a\u003e [load\\_balancer\\_details](#output\\_load\\_balancer\\_details) | Details of the Materialize instance load balancers. |\n| \u003ca name=\"output_network\"\u003e\u003c/a\u003e [network](#output\\_network) | Network details |\n| \u003ca name=\"output_operator\"\u003e\u003c/a\u003e [operator](#output\\_operator) | Materialize operator details |\n| \u003ca name=\"output_resource_group_name\"\u003e\u003c/a\u003e [resource\\_group\\_name](#output\\_resource\\_group\\_name) | n/a |\n| \u003ca name=\"output_storage\"\u003e\u003c/a\u003e [storage](#output\\_storage) | Azure Storage Account details |\n\n## Accessing the AKS cluster\n\nThe AKS cluster can be accessed using the `kubectl` command-line tool. To authenticate with the cluster, run the following command:\n\n```sh\naz aks get-credentials --resource-group $(terraform output -raw resource_group_name) --name $(terraform output -json aks_cluster | jq -r '.name')\n```\n\nThis command retrieves the AKS cluster credentials and merges them into the `~/.kube/config` file. You can now interact with the AKS cluster using `kubectl`.\n\n## Connecting to Materialize instances\n\nBy default, two `LoadBalancer` `Services` are created for each Materialize instance:\n1. One for balancerd, listening on:\n    1. Port 6875 for SQL connections to the database.\n    1. Port 6876 for HTTP(S) connections to the database.\n1. One for the web console, listening on:\n    1. Port 8080 for HTTP(S) connections.\n\nThe IP addresses of these load balancers will be in the `terraform output` as `load_balancer_details`.\n\n#### TLS support\n\nTLS support is provided by using `cert-manager` and a self-signed `ClusterIssuer`.\n\nMore advanced TLS support using user-provided CAs or per-Materialize `Issuer`s are out of scope for this Terraform module. Please refer to the [cert-manager documentation](https://cert-manager.io/docs/configuration/) for detailed guidance on more advanced usage.\n\n## Upgrade Notes\n\n#### v0.9.0\n\nEnvironmentd now selects swap nodes by default.\n\n#### v0.8.0\n\nYou must upgrade to at least v0.7.x before upgrading to v0.8.x of this terraform code.\n\nBreaking changes:\n* The system node pool is renamed and significantly modified, forcing a recreation.\n* Openebs is removed, and with it all support for lgalloc, our legacy spill to disk mechanism.\n\n#### v0.7.0\n\nThis is an intermediate version to handle some changes that must be applied in stages.\nIt is recommended to upgrade to v0.8.x after upgrading to this version.\n\nBreaking changes:\n* Swap is enabled by default.\n* Support for lgalloc, our legacy spill to disk mechanism, is deprecated, and will be removed in the next version.\n* We now always use two node pools, one for system workloads and one for Materialize workloads.\n    * Variables for configuring these node pools have been renamed, so they may be configured separately.\n\nTo avoid downtime when upgrading to future versions, you must perform a rollout at this version.\n1. Ensure your `environmentd_version` is at least `v26.0.0`.\n2. Update your `request_rollout` (and `force_rollout` if already at the correct `environmentd_version`).\n3. Run `terraform apply`.\n\nYou must upgrade to at least v0.6.x before upgrading to v0.7.0 of this terraform code.\n\nIt is strongly recommended to have enabled swap on v0.6.x before upgrading to v0.7.0 or higher.\n\n#### v0.6.1\n\nWe recommend upgrading to at least v0.5.10 before upgrading to v0.6.x of this terraform code.\n\nTo use swap:\n1. Set `swap_enabled` to `true`.\n2. Ensure your `environmentd_version` is at least `v26.0.0`.\n3. Update your `request_rollout` (and `force_rollout` if already at the correct `environmentd_version`).\n4. Run `terraform apply`.\n\nThis will create a new node group configured for swap, and migrate your clusterd pods there.\n\n#### v0.6.0\n\nThis version is missing the updated helm chart.\nSkip this version, go to v0.6.1.\n\n#### v0.3.0\n\nWe now install `cert-manager` and configure a self-signed `ClusterIssuer` by default.\n\nDue to limitations in Terraform, it cannot plan Kubernetes resources using CRDs that do not exist yet. We have worked around this for new users by only generating the certificate resources when creating Materialize instances that use them, which also cannot be created on the first run.\n\nFor existing users upgrading Materialize instances not previously configured for TLS:\n1. Leave `install_cert_manager` at its default of `true`.\n2. Set `use_self_signed_cluster_issuer` to `false`.\n3. Run `terraform apply`. This will install cert-manager and its CRDs.\n4. Set `use_self_signed_cluster_issuer` back to `true` (the default).\n5. Update the `request_rollout` field of the Materialize instance.\n6. Run `terraform apply`. This will generate the certificates and configure your Materialize instance to use them.\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterializeinc%2Fterraform-azurerm-materialize","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaterializeinc%2Fterraform-azurerm-materialize","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterializeinc%2Fterraform-azurerm-materialize/lists"}