Upgrade on AWS
To upgrade your Materialize instances, upgrade the Materialize operator first and then the Materialize instances. The following tutorial upgrades your Materialize deployment running on AWS Elastic Kubernetes Service (EKS).
The tutorial assumes you have installed Materialize on AWS Elastic Kubernetes Service (EKS) using the instructions on Install on AWS (either from the examples/simple directory or the root).
Version compatibility
The following table presents the versions compatibility for the operator and the applications:
| Materialize Operator | orchestratord version | environmentd version | Release date | Notes | 
|---|---|---|---|---|
| v25.2.12 | v0.161.0 | v0.147.18 | 2025-10-23 | Fix DDL lock being required when sequencing ALTER SINK | 
| v25.2.11 | v0.159.1 | v0.147.17 | 2025-10-14 | Fixes issue where licenceKeyChecks were enabled by default | 
| v25.2.10 | v0.159.1 | v0.147.17 | 2025-10-9 | Adds support for GCP using COPY TO s3, resolves console bug involving sources in object explorer, fixes 0dt cluster reconfiguration issue. | 
| v25.2.9 | v0.159.0 | v0.147.17 | 2025-10-8 | Please use 25.2.10 | 
| v25.2.5 | v0.154.0. | v0.147.6 | 2025-08-21 | Fixes license key issues, adds broader service account support. | 
| v25.2.4 | v0.153.0 | v0.147.4 | 2025-07-15 | DO NOT USE | 
| v25.2.3 | v0.147.5 | v0.147.4 | 2025-07-15 | |
| v25.2.0 | v0.147.0 | v0.147.0 | 2025-06-24 | Support for password authentication. | 
| v25.1.12 | v0.144.0 | v0.130.13 | 2025-05-15 | |
| v25.1.11 | v0.143.0 | v0.130.12 | 2025-05-15 | |
| v25.1.10 | v0.142.1 | v0.130.11 | 2025-04-24 | 
When upgrading, you may need or want to update your fork of the Terraform module to upgrade.
| Terraform version | Notable changes | 
|---|---|
| v0.5.5 | 
 | 
| v0.5.4 | 
 | 
| v0.4.9 | 
 | 
| v0.4.6 | 
 | 
| v0.4.5 | 
 | 
| v0.4.4 | 
 | 
Prerequisites
Terraform
If you don’t have Terraform installed, install Terraform.
AWS CLI
If you do not have the AWS CLI installed, install. For details, see the AWS documentation.
kubectl
If you do not have kubectl, install. See the Amazon EKS: install kubectl
documentation
for details.
Helm 3.2.0+
If you do not have Helm 3.2.0+, install. For details, see the Helm documentation.
Procedure
- 
Open a Terminal window. 
- 
Configure AWS CLI with your AWS credentials. For details, see the AWS documentation. 
- 
Go to the Terraform directory for your Materialize deployment. For example, if you deployed from the examples/simpledirectory:cd terraform-aws-materialize/examples/simple
- 
Optional. You may need to update your fork of the Terraform module to upgrade. 💡 Tip:If upgrading from a deployment that was set up using an earlier version of the Terraform modules, additional considerations may apply when using an updated Terraform modules to your existing deployments. See Materialize on AWS releases for notable changes. 
- 
Configure kubectlto connect to your EKS cluster, replacing:- 
<your-eks-cluster-name>with the name of your EKS cluster. Your cluster name has the form{namespace}-{environment}-eks; e.g.,my-demo-dev-eks.
- 
<your-region>with the region of your EKS cluster. The simple example usesus-east-1.
 aws eks update-kubeconfig --name <your-eks-cluster-name> --region <your-region>To verify that you have configured correctly, run the following command: kubectl get nodesFor help with kubectlcommands, see kubectl Quick reference.
- 
- 
Back up your terraform.tfvarsfile.cp terraform.tfvars original_terraform.tfvars
- 
Update the terraform.tfvarsto set the Materialize Operator version:Variable Description operator_versionNew Materialize Operator version. 
 - If the variable does not exist, add the variable and set to the new version.
- If the variable exists, update the value to the new version.
 ##... Existing content not shown for brevity ##... Leave the existing variables unchanged operator_version="v25.2.13" # Set to the desired operator version
- 
Initialize the terraform directory. terraform init
- 
Run terraform planwith both theterraform.tfvarsand yourmz_instances.tfvarsfiles and review the changes to be made.terraform plan -var-file=terraform.tfvars -var-file=mz_instances.tfvarsThe plan should show the changes to be made for the materialize_operator.
- 
If you are satisfied with the changes, apply. terraform apply -var-file=terraform.tfvars -var-file=mz_instances.tfvarsTo approve the changes and apply, enter yes.Upon successful completion, you should see output with a summary of changes. 
- 
Verify that the operator is running: kubectl -n materialize get allVerify the operator upgrade by checking its events: kubectl -n materialize describe pod -l app.kubernetes.io/name=materialize-operator- 
The Containers section should show the --helm-chart-versionargument set to the new version.
- 
The Events section should list that the new version of the orchestratord have been pulled. 
 
- 
- 
Back up your mz_instances.tfvarsfile.cp mz_instances.tfvars original_mz_instances.tfvars
- 
Update the mz_instances.tfvarsto specify the upgrade variables for each instance:Variable Description create_databaseSet to false.environmentd_versionNew Materialize instance version. request_rolloutorforce_rolloutA new UUID string. Can be generated with uuidgen.
 - request_rollouttriggers a rollout only if changes exist.
- force_rollouttriggers a rollout even if no changes exist.
 inPlaceRolloutSet to falseto perform a rolling upgrade. For rolling upgrades, ensure you have enough resources to support having both the old and new Materialize instances running during the upgrade.For example, the following instance specifies: - a create_databaseoffalse,
- an inPlaceRolloutoffalse,
- an environmentd_versionof"v0.147.18", and
- a request_rolloutof"22222222-2222-2222-2222-222222222222".
 materialize_instances = [ { name = "demo" namespace = "materialize-environment" database_name = "demo_db" cpu_request = "1" memory_request = "2Gi" memory_limit = "2Gi" create_database = false environmentd_version = "v0.147.18" inPlaceRollout: false # When false, performs a rolling upgrade rather than in-place requestRollout: 22222222-2222-2222-2222-222222222222 # Enter a new UUID } ]WARNING! Please consult the Materialize team before setting inPlaceRollout to true and performing an in-place rollout. In almost all cases a rolling upgrade is preferred.
- 
Run terraform planwith both theterraform.tfvarsand yourmz_instances.tfvarsfiles and review the changes to be made.terraform plan -var-file=terraform.tfvars -var-file=mz_instances.tfvarsThe plan should show the changes to be made for the Materialize instance. 
- 
If you are satisfied with the changes, apply. terraform apply -var-file=terraform.tfvars -var-file=mz_instances.tfvarsTo approve the changes and apply, enter yes.Upon successful completion, you should see output with a summary of changes. 
- 
Verify that the components are running after the upgrade: kubectl -n materialize-environment get allVerify upgrade by checking the balancerdevents:kubectl -n materialize-environment describe pod -l app=balancerdThe Events section should list that the new version of the balancerdhave been pulled.Verify the upgrade by checking the environmentdevents:kubectl -n materialize-environment describe pod -l app=environmentdThe Events section should list that the new version of the environmentdhave been pulled.
- 
Open the Materialize Console. The Console should display the new version.