Upgrade on kind
To upgrade your Materialize instances, upgrade the Materialize operator first
and then the Materialize instances. The following tutorial upgrades your
Materialize deployment running locally on a kind
cluster.
The tutorial assumes you have installed Materialize on kind using the
instructions on Install locally on kind.
Version compatibility
When updating, you need to specify the Materialize Operator version,
orchestratord version, and the environmentd versions. 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 | 
Prerequisites
Helm 3.2.0+
If you don’t have Helm version 3.2.0+ installed, install. For details, see the Helm documentation.
kubectl
This tutorial uses kubectl. To install, refer to the kubectl
documentationq.
For help with kubectl commands, see kubectl Quick
reference.
Upgrade
- 
Open a Terminal window. 
- 
Go to your Materialize working directory. cd my-local-mz
- 
Upgrade the Materialize Helm chart. helm repo update materialize
- 
Get the sample configuration files for the new version. mz_operator_version=self-managed-v25.2.13 curl -o upgrade-values.yaml https://raw.githubusercontent.com/MaterializeInc/materialize/refs/tags/$mz_operator_version/misc/helm-charts/operator/values.yamlIf you have previously modified the sample-values.yamlfile for your deployment, include the changes into theupgrade-values.yamlfile.
- 
Upgrade the Materialize Operator, specifying the new version and the updated configuration file. Include any additional configurations that you specify for your deployment. helm upgrade my-materialize-operator materialize/materialize-operator \ --namespace=materialize \ --version v25.2.13 \ -f upgrade-values.yaml \ --set observability.podMetrics.enabled=true
- 
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
- 
Create a new upgrade-materialize.yamlfile with the following content:Field Description environmentdImageRefUpdate the version to the new version. requestRolloutorforceRolloutEnter a new UUID. Can be generated with uuidgen.
 - requestRollouttriggers a rollout only if changes exist.
- forceRollouttriggers 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.apiVersion: materialize.cloud/v1alpha1 kind: Materialize metadata: name: 12345678-1234-1234-1234-123456789012 namespace: materialize-environment spec: environmentdImageRef: materialize/environmentd:v0.147.18 # Update version requestRollout: 22222222-2222-2222-2222-222222222222 # Enter a new UUID # forceRollout: 33333333-3333-3333-3333-333333333333 # For forced rollouts inPlaceRollout: false # When false, performs a rolling upgrade rather than in-place backendSecretName: materialize-backendWARNING! 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.
- 
Apply the upgrade-materialize.yaml file to your Materialize instance: kubectl apply -f upgrade-materialize.yaml
- 
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.