Upgrade on Azure
The following tutorial upgrades your Materialize deployment running on Azure Kubernetes Service (AKS). The tutorial assumes you have installed the example on Install on Azure.
Upgrade guidelines
When upgrading:
-
Always check the version specific upgrade notes.
-
Always upgrade the Materialize Operator before upgrading the Materialize instances.
Prerequisites
Required Tools
Upgrade process
Step 1: Set up
-
Open a Terminal window.
-
Configure Azure CLI with your Azure credentials. For details, see the Azure documentation.
-
Go to the Terraform directory for your Materialize deployment. For example, if you deployed from the
azure/examples/simpledirectory:cd materialize-terraform-self-managed/azure/examples/simple -
Configure
kubectlto connect to your AKS cluster, replacing:-
<your-resource-group-name>with your resource group name; i.e., theresource_group_namein the Terraform output or in theterraform.tfvarsfile. -
<your-aks-cluster-name>with your cluster name; i.e., theaks_cluster_namein the Terraform output. For the sample example, your cluster name has the form{prefix_name}-aks; e.g., simple-demo-aks`.
# az aks get-credentials --resource-group <your-resource-group-name> --name <your-aks-cluster-name> az aks get-credentials --resource-group $(terraform output -raw resource_group_name) --name $(terraform output -raw aks_cluster_name)To verify that you have configured correctly, run the following command:
kubectl get nodesFor help with
kubectlcommands, see kubectl Quick reference. -
Step 2: Update the Helm Chart
To update your Materialize Helm Chart repository:
-
Update the Helm repo:
helm repo update materialize -
View the available chart versions:
helm search repo materialize/materialize-operator --versions
Step 3: Upgrade the Materialize Operator
-
Use
helm listto find the release name. The sample example deployment using the unified Terraform module deploys the Operator in thematerializenamespace.helm list -n materializeRetrieve the release name (corresponds to the
name_prefixvariable specified in yourterraform.tfvars) associated with thematerialize-operatorCHART; for example,simple-demoin the following output:NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION simple-demo materialize 1 2025-12-08 11:39:50.185976 -0500 EST deployed materialize-operator-v26.1.0 v26.1.0 -
Export your current values to a file to preserve any custom settings:
helm get values -n materialize simple-demo -o yaml > my-values.yaml -
Upgrade your Operator. For example, the following upgrades the Operator to v26.1.1:
NOTE: For major version upgrades, you can only upgrade one major version at a time. For example, upgrades from v26.1.0 to v27.3.0 is permitted but v26.1.0 to v28.0.0 is not.helm upgrade -n materialize simple-demo materialize/materialize-operator \ -f my-values.yaml \ --version v26.1.1 -
Verify that the Operator is running:
kubectl -n materialize get all -
Get the APP VERSION of the Operator.
helm list -n materializeThe APP VERSION will be the value that you will use for upgrading Materialize instances.
Step 4: Upgrading Materialize Instances
After you have upgraded your Materialize Operator, upgrade your Materialize instance(s) to the APP Version of the Operator. When upgrading Materialize Instances versions, changes are not automatically rolled out by the Operator in order to minimize unexpected downtime and avoid connection drops at critical periods. Instead, the upgrade process involves two steps:
- First, staging the version change to the Materialize custom resource.
- Second, rolling out the changes via a
requestRolloutflag.
-
Find the name of the Materialize instance to upgrade. The sample example deployment using the unified Terraform module deploys the Materialie instance in the
materialize-environmentnamespace.kubectl get materialize -n materialize-environmentIn the example deployment, the name of the instance is
main.NAME main -
Stage, but not rollout, the Materialize instance version upgrade.
kubectl patch materialize main\ -n materialize-environment \ --type='merge' \ -p "{\"spec\": {\"environmentdImageRef\": \"docker.io/materialize/environmentd:v26.1.1\"}}" -
Rollout the Materialize instance version change.
kubectl patch materialize main \ -n materialize-environment \ --type='merge' \ -p "{\"spec\": {\"requestRollout\": \"$(uuidgen)\"}}" -
Verify the upgrade by checking the
environmentdevents:kubectl -n materialize-environment describe pod -l app=environmentd