Introduce v1 of the Materialize CRD#35418
Open
alex-hunt-materialize wants to merge 6 commits into
Open
Conversation
Contributor
|
Thanks for opening this PR! Here are a few tips to help make the review process smooth for everyone. PR title guidelines
Pre-merge checklist
|
d7820a1 to
7714f2e
Compare
This was referenced Mar 16, 2026
97fee3f to
94e8b96
Compare
5f9c4ca to
94e8b96
Compare
ad461da to
7d439d0
Compare
doy-materialize
approved these changes
Mar 23, 2026
7d439d0 to
aef4094
Compare
Merged
4 tasks
3613be5 to
fb4acb3
Compare
def-
reviewed
Apr 18, 2026
d09aedf to
a23f407
Compare
fa03814 to
bf9e7ba
Compare
bf9e7ba to
d36fd0d
Compare
051d2ea to
208d22c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a new
v1version of the Materialize CRD, and a conversion webhook in orchestratord to convert betweenv1andv1alpha1.The
v1CRD removes therequestRolloutfield in favor of calculating a hash over a subset of spec fields to determine when a rollout is needed.v1alpha1remains the storage version, and orchestratord still reconcilesv1alpha1, so this is backwards compatible with existing automation. When av1CR is applied, the conversion webhook converts it tov1alpha1, injecting arequestRolloutUUID derived deterministically (UUIDv5) from the spec hash: when the hash changes a rollout is triggered immediately (the intendedv1behavior), and when it hasn't, the same UUID is produced and no unintended rollout occurs.The whole thing is opt-in:
v1CRD and the conversion webhook are only installed when theoperator.args.installV1CRDhelm value is set (--install-v1-crd). Without it, onlyv1alpha1is registered, no webhook serving certificate or service is created, and cert-manager is not required.installV1CRDset, existingv1alpha1CRs behave exactly as before; users switch individual instances by applying av1CR.The webhook serving certificate is issued from a long-lived root CA (via an intermediate cert-manager issuer), so routine serving-certificate rotations don't invalidate the CA bundle registered in the CRD. orchestratord periodically reloads the certificate from disk (
--webhook-cert-reload-interval) and re-registers the CRDs with the new CA bundle if the CA itself ever changes.Separate documentation PR is at #35508
Cloud companion PR is at https://github.com/MaterializeInc/cloud/pull/12275
Motivation
Simplifying rollout behavior.
Part of https://linear.app/materializeinc/issue/DEP-7/design-simplifying-upgrade-rollouts-node-rolls-converted-to-project
Verification
Added orchestratord nightly tests for the
v1opt-in flow, webhook certificate rotation (including CA rotation and CRD re-registration), manual promotion, and CRD version checks asserting thatv1and the conversion webhook are installed if and only ifinstallV1CRDis set. Verified the existingv1alpha1tests still pass.Deployed https://github.com/MaterializeInc/cloud/pull/12275 in a personal stack to validate that this works for SaaS at
v1alpha1.