Skip to content

Commit 3a9d1aa

Browse files
committed
update upgrade docs for v26
1 parent 58c29ca commit 3a9d1aa

File tree

1 file changed

+31
-18
lines changed

1 file changed

+31
-18
lines changed

doc/user/content/installation/upgrading.md

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ When upgrading:
2222
- Always upgrade your Materialize instances after upgrading the operator to
2323
ensure compatibility.
2424

25+
- Always check the [version specific upgrade notes](#version-specific-upgrade-notes).
26+
27+
2528
### Upgrading the Helm Chart
2629

2730
{{< important >}}
@@ -53,8 +56,6 @@ ensure compatibility.
5356

5457
To upgrade your Materialize instances, you'll need to update the Materialize custom resource and trigger a rollout.
5558

56-
By default, the operator performs rolling upgrades (`inPlaceRollout: false`) which minimize downtime but require additional Kubernetes cluster resources during the transition. However, keep in mind that rolling upgrades typically take longer to complete due to the sequential rollout process. For environments where downtime is acceptable, you can opt for in-place upgrades (`inPlaceRollout: true`).
57-
5859
#### Determining the Version
5960

6061
The compatible version for your Materialize instances is specified in the Helm chart's `appVersion`. For the installed chart version, you can run:
@@ -69,11 +70,11 @@ Or check the `Chart.yaml` file in the `misc/helm-charts/operator` directory:
6970
apiVersion: v2
7071
name: materialize-operator
7172
# ...
72-
version: 25.1.0-beta.1
73-
appVersion: v0.125.2 # Use this version for your Materialize instances
73+
version: 26.0.0
74+
appVersion: v26.0.0 # Use this version for your Materialize instances
7475
```
7576
76-
Use the `appVersion` (`v0.125.2` in this case) when updating your Materialize instances to ensure compatibility.
77+
Use the `appVersion` (`v26.0.0` in this case) when updating your Materialize instances to ensure compatibility.
7778

7879
#### Using `kubectl` patch
7980

@@ -84,7 +85,7 @@ For standard upgrades such as image updates:
8485
kubectl patch materialize <instance-name> \
8586
-n <materialize-instance-namespace> \
8687
--type='merge' \
87-
-p "{\"spec\": {\"environmentdImageRef\": \"materialize/environmentd:v0.125.2\"}}"
88+
-p "{\"spec\": {\"environmentdImageRef\": \"materialize/environmentd:v26.0.0\"}}"
8889
8990
# Then trigger the rollout with a new UUID
9091
kubectl patch materialize <instance-name> \
@@ -99,7 +100,7 @@ You can combine both operations in a single command if preferred:
99100
kubectl patch materialize 12345678-1234-1234-1234-123456789012 \
100101
-n materialize-environment \
101102
--type='merge' \
102-
-p "{\"spec\": {\"environmentdImageRef\": \"materialize/environmentd:v0.125.2\", \"requestRollout\": \"$(uuidgen)\"}}"
103+
-p "{\"spec\": {\"environmentdImageRef\": \"materialize/environmentd:v26.0.0\", \"requestRollout\": \"$(uuidgen)\"}}"
103104
```
104105

105106
#### Using YAML Definition
@@ -113,10 +114,11 @@ metadata:
113114
name: 12345678-1234-1234-1234-123456789012
114115
namespace: materialize-environment
115116
spec:
116-
environmentdImageRef: materialize/environmentd:v0.125.2 # Update version as needed
117+
environmentdImageRef: materialize/environmentd:v26.0.0 # Update version as needed
117118
requestRollout: 22222222-2222-2222-2222-222222222222 # Generate new UUID
118119
forceRollout: 33333333-3333-3333-3333-333333333333 # Optional: for forced rollouts
119-
inPlaceRollout: false # When false, performs a rolling upgrade rather than in-place
120+
inPlaceRollout: false # In Place rollout is depecrated and ignored. Please use rolloutStrategy
121+
rolloutStrategy: WaitUntilReady # The mechanism to use when rolling out the new version. Can be WaitUntilReady or ImmediatelyPromoteCausingDowntime
120122
backendSecretName: materialize-backend
121123
```
122124

@@ -137,9 +139,9 @@ kubectl patch materialize <instance-name> \
137139
-p "{\"spec\": {\"requestRollout\": \"$(uuidgen)\", \"forceRollout\": \"$(uuidgen)\"}}"
138140
```
139141

140-
The behavior of a forced rollout follows your `inPlaceRollout` setting:
141-
- With `inPlaceRollout: false` (default): Creates new instances before terminating the old ones, temporarily requiring twice the resources during the transition
142-
- With `inPlaceRollout: true`: Directly replaces the instances, causing downtime but without requiring additional resources
142+
The behavior of a the new version rollout follows your `rolloutStrategy` setting:
143+
- With `WaitUntilReady` (default): New instances are created and all dataflows are determined to be ready before cuto over and termination the old version, temporarily requiring twice the resources during the transition
144+
- With `ImmediatelyPromoteCausingDowntime`: Tears down the prior version before creating and promoting the new version. This causes downtime equal to the duration it takes for datalfows to hydrate, but does not require additional resources
143145

144146
### Verifying the Upgrade
145147

@@ -155,12 +157,23 @@ kubectl logs -l app.kubernetes.io/name=materialize-operator -n materialize
155157

156158
### Notes on Rollouts
157159

158-
- `requestRollout` triggers a rollout only if there are actual changes to the instance (like image updates)
159-
- `forceRollout` triggers a rollout regardless of whether there are changes, which can be useful for debugging or when you need to force a rollout for other reasons
160-
- Both fields expect UUID values and each rollout requires a new, unique UUID value
161-
- `inPlaceRollout`:
162-
- When `false` (default): Performs a rolling upgrade by spawning new instances before terminating old ones. While this minimizes downtime, there may still be a brief interruption during the transition.
163-
- When `true`: Directly replaces existing instances, which will cause downtime.
160+
- `requestRollout` triggers a rollout only if there are actual changes to the instance (like image updates) - requires a new UUID each rollout.
161+
- `forceRollout` triggers a rollout regardless of whether there are changes, which can be useful for debugging or when you need to force a rollout for other reasons - requires a new UUID each rollout
162+
- `rolloutStrategy`:
163+
- `WaitUntilReady` (default): New instances are created and all dataflows are determined to be ready before cuto over and termination the old version, temporarily requiring twice the resources during the transition
164+
- `ImmediatelyPromoteCausingDowntime`: Tears down the prior version before creating and promoting the new version. This causes downtime equal to the duration it takes for datalfows to hydrate, but does not require additional resources
165+
- `inPlaceRollout`: Deprecated and ignored. Please use `rolloutStrategy`.
166+
167+
### Version Specific Upgrade Notes
168+
169+
#### Upgrading to `v26`
170+
- `v26` is a major version upgrade. In order to upgrade to `v26` you must first upgrade to `v25.2.15`, then upgrade to `v26.0.0`.
171+
- `v26` introduced a new requirement for license keys. In order to upgrade you will first need to add a license key to the `backendSecret` used in the spec for your Materialize resource.
172+
# TODO link to licence key doc / community license key marketing page
173+
174+
175+
#### Upgrading between minor versions less than `v26`
176+
- Prior to `v26` it is always required to upgrade at most one minor version at a time. For example upgrading from `v25.1.5` to `v25.2.15` is permitted.
164177

165178
## See also
166179

0 commit comments

Comments
 (0)