{"id":24308915,"url":"https://github.com/materializeinc/terraform-helm-materialize","last_synced_at":"2026-02-13T17:23:13.366Z","repository":{"id":272330340,"uuid":"911112062","full_name":"MaterializeInc/terraform-helm-materialize","owner":"MaterializeInc","description":"Terraform module for installing the Materialize Helm chart","archived":false,"fork":false,"pushed_at":"2025-02-28T11:03:30.000Z","size":44,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-28T17:54:53.419Z","etag":null,"topics":["helm","kubernetes","materialize","terraform"],"latest_commit_sha":null,"homepage":"https://github.com/MaterializeInc/materialize/tree/main/misc/helm-charts/operator","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":null,"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}},"created_at":"2025-01-02T09:16:38.000Z","updated_at":"2025-02-27T15:02:37.000Z","dependencies_parsed_at":"2025-01-13T18:48:45.508Z","dependency_job_id":"fae52a43-4749-4015-8a89-b9163d58b40e","html_url":"https://github.com/MaterializeInc/terraform-helm-materialize","commit_stats":null,"previous_names":["materializeinc/terraform-helm-materialize"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-helm-materialize","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-helm-materialize/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-helm-materialize/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaterializeInc%2Fterraform-helm-materialize/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaterializeInc","download_url":"https://codeload.github.com/MaterializeInc/terraform-helm-materialize/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242277694,"owners_count":20101545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["helm","kubernetes","materialize","terraform"],"created_at":"2025-01-17T05:11:55.175Z","updated_at":"2026-02-13T17:23:13.353Z","avatar_url":"https://github.com/MaterializeInc.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# terraform-helm-materialize\nTerraform module for installing the Materialize Helm chart\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n# Terraform module for installing the Materialize Helm Chart\n\nThis module installs the Materialize Helm chart into a Kubernetes cluster using Terraform.\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\n## Instance Rollout Options\n\nThe module supports several rollout strategies for Materialize instances through the following configuration options:\n\n### `in_place_rollout` (bool)\n- When `false` (default): Performs a rolling upgrade by creating new instances before terminating old ones. This minimizes downtime but requires additional cluster resources during the transition.\n- When `true`: Performs an in-place upgrade by directly replacing existing instances. This requires less resources but causes downtime.\n\n### `request_rollout` (string)\n- Triggers a rollout only when there are actual changes to the instance (e.g., image updates)\n- Requires a valid UUID in the format `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`\n- Must be changed to a new UUID value for each rollout\n\n### `force_rollout` (string)\n- Triggers a rollout regardless of whether there are changes to the instance\n- Useful for debugging or forcing a restart of instances\n- Requires a valid UUID in the format `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`\n- Must be changed to a new UUID value for each rollout\n\nTo use these options, set the appropriate values in the `instances` input variable and when you want to rollout a new version of the instance, set the `request_rollout` or `force_rollout` value to a new UUID.\n\n## Authentication Options\n\nThe module supports two authentication modes for Materialize instances:\n\n### `authenticator_kind` (string)\n- Determines how users authenticate with the Materialize instance.\n- Valid values are:\n  - `\"None\"` (default): No password authentication is enabled.\n  - `\"Password\"`: Enables password authentication for the `mz_system` user. When set to `\"Password\"`, you **must** provide a value for `external_login_password_mz_system`.\n\n### `external_login_password_mz_system` (string)\n- The password to set for the `mz_system` user when `authenticator_kind` is `\"Password\"`.\n- This value is stored securely in a Kubernetes Secret and used by the Materialize operator to configure authentication.\n- **Required** if `authenticator_kind` is set to `\"Password\"`.\n\n**Example:**\n```hcl\ninstances = [\n  {\n    name                              = \"materialize-instance\"\n    namespace                         = \"materialize\"\n    authenticator_kind                = \"Password\"\n    external_login_password_mz_system = \"your-secure-password\"\n    # other instance configurations\n  }\n]\n```\n\nIf `authenticator_kind` is not set or set to `\"None\"`, password authentication is disabled and `external_login_password_mz_system` is ignored.\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_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | ~\u003e 5.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\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_helm\"\u003e\u003c/a\u003e [helm](#provider\\_helm) | 2.17.0 |\n| \u003ca name=\"provider_kubernetes\"\u003e\u003c/a\u003e [kubernetes](#provider\\_kubernetes) | 2.35.1 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [helm_release.materialize_operator](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [helm_release.metrics_server](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |\n| [kubernetes_job.db_init_job](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/job) | resource |\n| [kubernetes_manifest.materialize_instances](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/manifest) | resource |\n| [kubernetes_namespace.instance_namespaces](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource |\n| [kubernetes_namespace.materialize](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource |\n| [kubernetes_namespace.monitoring](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource |\n| [kubernetes_secret.materialize_backends](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/secret) | resource |\n| [kubernetes_resource.materialize_instances](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/data-sources/resource) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_environment\"\u003e\u003c/a\u003e [environment](#input\\_environment) | Environment name | `string` | 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_repository\"\u003e\u003c/a\u003e [helm\\_repository](#input\\_helm\\_repository) | Repository URL for the Materialize operator Helm chart. Leave empty if using local chart. | `string` | `\"https://materializeinc.github.io/materialize/\"` | no |\n| \u003ca name=\"input_helm_values\"\u003e\u003c/a\u003e [helm\\_values](#input\\_helm\\_values) | Values to pass to the Helm chart | `any` | n/a | yes |\n| \u003ca name=\"input_install_metrics_server\"\u003e\u003c/a\u003e [install\\_metrics\\_server](#input\\_install\\_metrics\\_server) | Whether to install the metrics-server | `bool` | `true` | no |\n| \u003ca name=\"input_instances\"\u003e\u003c/a\u003e [instances](#input\\_instances) | Configuration for Materialize instances | \u003cpre\u003elist(object({\u003cbr/\u003e    name                              = string\u003cbr/\u003e    namespace                         = optional(string)\u003cbr/\u003e    create_database                   = optional(bool, true)\u003cbr/\u003e    database_name                     = string\u003cbr/\u003e    metadata_backend_url              = string\u003cbr/\u003e    persist_backend_url               = string\u003cbr/\u003e    license_key                       = optional(string)\u003cbr/\u003e    external_login_password_mz_system = optional(string)\u003cbr/\u003e    authenticator_kind                = optional(string, \"None\")\u003cbr/\u003e    environmentd_version              = optional(string, \"v26.11.0\") # META: mz version\u003cbr/\u003e    environmentd_extra_env = optional(list(object({\u003cbr/\u003e      name  = string\u003cbr/\u003e      value = string\u003cbr/\u003e    })), [])\u003cbr/\u003e    environmentd_extra_args = optional(list(string), [])\u003cbr/\u003e    cpu_request             = optional(string, \"1\")\u003cbr/\u003e    memory_request          = optional(string, \"1Gi\")\u003cbr/\u003e    memory_limit            = optional(string, \"1Gi\")\u003cbr/\u003e    in_place_rollout        = optional(bool, true)\u003cbr/\u003e    request_rollout         = optional(string, \"00000000-0000-0000-0000-000000000001\")\u003cbr/\u003e    force_rollout           = optional(string, \"00000000-0000-0000-0000-000000000001\")\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  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_metrics_server_version\"\u003e\u003c/a\u003e [metrics\\_server\\_version](#input\\_metrics\\_server\\_version) | Version of metrics-server to install | `string` | `\"3.12.2\"` | no |\n| \u003ca name=\"input_monitoring_namespace\"\u003e\u003c/a\u003e [monitoring\\_namespace](#input\\_monitoring\\_namespace) | Namespace for monitoring resources | `string` | `\"monitoring\"` | no |\n| \u003ca name=\"input_namespace\"\u003e\u003c/a\u003e [namespace](#input\\_namespace) | Namespace prefix for all resources | `string` | 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` | `\"v26.11.0\"` | no |\n| \u003ca name=\"input_postgres_version\"\u003e\u003c/a\u003e [postgres\\_version](#input\\_postgres\\_version) | Postgres version to use for the metadata backend | `string` | `\"15\"` | 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\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_materialize_instance_resource_ids\"\u003e\u003c/a\u003e [materialize\\_instance\\_resource\\_ids](#output\\_materialize\\_instance\\_resource\\_ids) | Resource IDs of created Materialize instances |\n| \u003ca name=\"output_materialize_instances\"\u003e\u003c/a\u003e [materialize\\_instances](#output\\_materialize\\_instances) | Details of created Materialize instances |\n| \u003ca name=\"output_operator_namespace\"\u003e\u003c/a\u003e [operator\\_namespace](#output\\_operator\\_namespace) | Namespace where the operator is installed |\n| \u003ca name=\"output_operator_release_name\"\u003e\u003c/a\u003e [operator\\_release\\_name](#output\\_operator\\_release\\_name) | Helm release name of the operator |\n| \u003ca name=\"output_operator_release_status\"\u003e\u003c/a\u003e [operator\\_release\\_status](#output\\_operator\\_release\\_status) | Status of the helm release |\n\n## Chart Installation for Development\n\nBy default, the module installs the Materialize chart from a remote Helm repository, requiring no additional configuration.\n\nFor development and testing, you can use a local chart by specifying a local path:\n\n```hcl\nmodule \"materialize\" {\n  # ... other configuration ...\n  use_local_chart = true\n  helm_chart      = \"./path/to/local/chart\"\n}\n```\n\nThis allows you to modify and test the chart locally before deploying it in a production environment.\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterializeinc%2Fterraform-helm-materialize","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaterializeinc%2Fterraform-helm-materialize","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaterializeinc%2Fterraform-helm-materialize/lists"}