Upgrade on AWS (Terraform)
-
To upgrade to
v26.0using Materialize-provided Terraforms, upgrade your Terraform version tov0.6.1or higher, AWS Terraform v0.6.1 Upgrade Notes. -
To upgrade to
v26.0ifnot using a Materialize-provided Terraforms, you must prepare your nodes by adding the required labels. For detailed instructions, see Prepare for swap and upgrade to v26.0.
To upgrade your Materialize instances, first choose a new operator version and upgrade the Materialize operator. Then, upgrade your Materialize instances to the same version. 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
When upgrading, you may need or want to update your fork of the Terraform module to upgrade.
| Terraform version | Notable changes |
|---|---|
| v0.6.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.
License key
Starting in v26.0, Materialize requires a license key. If your existing deployment does not have a license key configured, contact Materialize support.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="v26.0.0" # 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. This should be the same as the operator version: v26.0.0.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.license_keyRequired. Set to the value of your license key. If your existing deployment does not have a license key, contact Materialize support. If you have a license key, substitute your license key for <ENTER YOUR LICENSE KEY HERE>.For example, the following instance specifies:
- a
create_databaseoffalse, - an
inPlaceRolloutoffalse, - an
environmentd_versionof"v26.0.0", - a
request_rolloutof"22222222-2222-2222-2222-222222222222", and - a
license_key(substituting your license key for<ENTER YOUR LICENSE KEY HERE>).
materialize_instances = [ { name = "demo" namespace = "materialize-environment" database_name = "demo_db" cpu_request = "1" memory_request = "2Gi" memory_limit = "2Gi" create_database = false license_key = "<ENTER YOUR LICENSE KEY HERE>" # Required. environmentd_version = "v26.0.0" 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.