Upgrade on Azure
View as MarkdownThe 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 for your target version:
-
Always upgrade the Materialize Operator before upgrading the Materialize instances.
Prerequisites
Required Tools
Upgrade process
Step 1: Update TF module source version
Update each module’s source to point to the desired release tag, substituting
<RELEASE_TAG> in the code block below with your tag version:
The following code block is not comprehensive. Only the core modules and their dependency chain are shown below.
If your configuration includes additional modules (networking, storage, database, node pools, etc.) provided by Materialize, update those to the same release tag as well.
module "aks" {
source = "github.com/MaterializeInc/materialize-terraform-self-managed//azure/modules/aks?ref=<RELEASE_TAG>"
# ... your existing configuration ...
}
module "cert_manager" {
source = "github.com/MaterializeInc/materialize-terraform-self-managed//kubernetes/modules/cert-manager?ref=<RELEASE_TAG>"
# ... your existing configuration ...
# Your configuration may have additional dependencies here.
depends_on = [module.aks]
}
module "operator" {
source = "github.com/MaterializeInc/materialize-terraform-self-managed//azure/modules/operator?ref=<RELEASE_TAG>"
# ... your existing configuration ...
# Your configuration may have additional dependencies here.
depends_on = [module.cert_manager]
}
module "materialize_instance" {
source = "github.com/MaterializeInc/materialize-terraform-self-managed//kubernetes/modules/materialize-instance?ref=<RELEASE_TAG>"
# ... your existing configuration ...
# Your configuration may have additional dependencies here.
depends_on = [module.operator]
}
# Update the source of any additional Materialize-provided modules to the same release tag
Step 2: Explicitly request rollout if using v1alpha1
v1alpha1 is the default CRD version for a Materialize instance.
With v1alpha1, instance rollouts require manually rotating a
UUID.
To check the CRD version of the Materialize manifest that was applied, run the following:
terraform state show 'module.materialize_instance.kubectl_manifest.materialize_instance' \
| grep -iE 'api_?version|kind'
- If you are using
v1, skip to the Apply the updated TF step. -
If you are using
v1alpha1, you need to update yourterraform.tfvarsfile to set therequest_rolloutvariable to a new UUID value, substituting the example value in the code block below with a UUID you generate (for example, withuuidgen):# ... # ... request_rollout = "DBB4FCEC-1837-44F6-9CF2-3894678DD8D5" # ONLY for v1alpha1
Step 3: Apply the updated TF
-
Initialize the Terraform directory to download the required providers and modules:
terraform init -
Review the execution plan before applying. In particular, check for any resources Terraform plans to destroy and recreate (shown as
-/+in the plan), especially stateful resources such as your cluster, storage, and database:terraform plan -
After reviewing the plan, apply the Terraform configuration.
terraform apply
Step 4: Verify the upgrade
Configure kubectl to connect to your AKS cluster:
# 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)
terraform apply returns once the Materialize custom resource is updated.
The Operator then rolls out the new generation asynchronously, so the new
environmentd pods may take a few minutes to become ready.
-
Check the status of the
materializenamespace:kubectl -n materialize get all -
Check the status of the
materialize-environmentnamespace:kubectl -n materialize-environment get all -
Once a new
environmentdis up (may take a few minutes), confirm the runningenvironmentdversion matches the version you upgraded to. Check theImagefield in the pod description.kubectl -n materialize-environment describe pod -l app=environmentd
If you run into an error during the upgrade, refer to the Troubleshooting.