-
Notifications
You must be signed in to change notification settings - Fork 141
Add documentation for MRDs, MRAPs, and safe-start #964
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
✅ Deploy Preview for crossplane ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
d5ba59e
to
94f0d80
Compare
Same for CronOperation. This matches the established pattern. Signed-off-by: Nic Cope <[email protected]>
9018335
to
4150774
Compare
Large Crossplane providers install hundreds of CRDs consuming significant API server resources, even when users only need a few resource types. The new alpha ManagedResourceDefinition (MRD) and ManagedResourceActivationPolicy (MRAP) features in Crossplane v2.0+ solve this by enabling selective activation of provider resources, but lack user-facing documentation. This change adds complete documentation covering both concepts and practical implementation. The MRD concepts page explains the CRD scaling problem and selective activation approach. The MRAP concepts page details pattern-based activation strategies and multiple policy coordination. Two how-to guides provide end-to-end workflows: one for users wanting to reduce CRD overhead through selective activation, and another for provider developers implementing safe-start capability. The user guide was tested with simulated MRDs to verify the activation workflow and troubleshooting steps. Signed-off-by: Nic Cope <[email protected]>
Signed-off-by: Nic Cope <[email protected]>
Without the quote it renders like a comment for some reason. Signed-off-by: Nic Cope <[email protected]>
Signed-off-by: Nic Cope <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly consistency in formatting. Not sure about the formatting for "safe-start" if it's a component that needs proper noun-ing or wrapping in backticks.
{{</hint>}} | ||
|
||
A `ManagedResourceDefinition` (MRD) is a lightweight abstraction over | ||
Kubernetes CustomResourceDefinitions (CRDs) that enables selective activation of |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kubernetes CustomResourceDefinitions (CRDs) that enables selective activation of | |
Kubernetes `CustomResourceDefinitions` (CRDs) that enables selective activation of |
<!-- vale Microsoft.HeadingAcronyms = YES --> | ||
<!-- vale Google.Headings = YES --> | ||
|
||
MRAPs contain activation patterns that match ManagedResourceDefinition names. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MRAPs contain activation patterns that match ManagedResourceDefinition names. | |
MRAPs contain activation patterns that match `ManagedResourceDefinition` names. |
supported, consuming unnecessary cluster resources. | ||
|
||
MRAPs solve this by providing pattern-based activation of | ||
ManagedResourceDefinitions, letting you choose which provider resources to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ManagedResourceDefinitions, letting you choose which provider resources to | |
`ManagedResourceDefinitions`, letting you choose which provider resources to |
Large Crossplane providers can install 100+ managed resource CRDs, consuming | ||
significant cluster resources even when you only need one or two resource | ||
types. This guide shows how to use | ||
[ManagedResourceDefinitions]({{<ref "../managed-resources/managed-resource-definitions">}}) | ||
and | ||
[ManagedResourceActivationPolicies]({{<ref "../managed-resources/managed-resource-activation-policies">}}) | ||
to install only the provider resources you actually need. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Large Crossplane providers can install 100+ managed resource CRDs, consuming | |
significant cluster resources even when you only need one or two resource | |
types. This guide shows how to use | |
[ManagedResourceDefinitions]({{<ref "../managed-resources/managed-resource-definitions">}}) | |
and | |
[ManagedResourceActivationPolicies]({{<ref "../managed-resources/managed-resource-activation-policies">}}) | |
to install only the provider resources you actually need. | |
Large Crossplane providers can install 100+ managed resource CRDs, consuming | |
significant cluster resources even when you only need one or two resource | |
types. This guide shows how to use | |
[`ManagedResourceDefinitions`]({{<ref "../managed-resources/managed-resource-definitions">}}) | |
and | |
[`ManagedResourceActivationPolicies`]({{<ref "../managed-resources/managed-resource-activation-policies">}}) | |
to install only the provider resources you actually need. |
- Basic familiarity with Kubernetes and Crossplane concepts | ||
|
||
{{<hint "important">}} | ||
ManagedResourceDefinitions and ManagedResourceActivationPolicies are alpha |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ManagedResourceDefinitions and ManagedResourceActivationPolicies are alpha | |
`ManagedResourceDefinitions` and `ManagedResourceActivationPolicies` are alpha |
|
||
## What safe-start provides | ||
|
||
safe-start changes how your provider handles CRD installation: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
safe-start changes how your provider handles CRD installation: | |
Safe-start changes how your provider handles CRD installation: |
or safe-start
? Not sure, but I didn't add suggestions for the other instances.
- Higher memory usage and API server load | ||
|
||
**With safe-start:** | ||
- Providers create ManagedResourceDefinitions but CRDs only when activated |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Providers create ManagedResourceDefinitions but CRDs only when activated | |
- Providers create `ManagedResourceDefinitions` but CRDs only when activated |
|
||
**With safe-start:** | ||
- Providers create ManagedResourceDefinitions but CRDs only when activated | ||
- Users activate only needed resources through ManagedResourceActivationPolicies |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Users activate only needed resources through ManagedResourceActivationPolicies | |
- Users activate only needed resources through `ManagedResourceActivationPolicies` |
|
||
- Provider built with crossplane-runtime v2.0+ | ||
- Understanding of | ||
[ManagedResourceDefinitions]({{<ref "../managed-resources/managed-resource-definitions">}}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[ManagedResourceDefinitions]({{<ref "../managed-resources/managed-resource-definitions">}}) | |
[`ManagedResourceDefinitions`]({{<ref "../managed-resources/managed-resource-definitions">}}) |
|
||
### Step 2: Add required imports | ||
|
||
Update your main.go imports (see |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update your main.go imports (see | |
Update your `main.go` imports (see |
--- | ||
|
||
This guide shows provider developers how to implement safe-start capability in | ||
their Crossplane providers. safe-start enables |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
their Crossplane providers. safe-start enables | |
their Crossplane providers. `safe-start` enables |
or Safe-start?
I just chatted to @tr0njavolta on Slack and they don't feel strongly about the formatting changes. We're pretty inconsistent and I lean these days toward not using the backticks as much (e.g. see the Operations docs), so I'd prefer to avoid reformatting. I think separately we should probably agree on a style for this and do a pass over the whole docs. |
Closes #958
Large Crossplane providers install hundreds of CRDs consuming significant API server resources, even when users only need a few resource types. The new alpha ManagedResourceDefinition (MRD) and ManagedResourceActivationPolicy
(MRAP) features in Crossplane v2.0+ solve this by enabling selective activation of provider resources, but lack user-facing documentation.
This change adds complete documentation covering both concepts and practical implementation. The MRD concepts page explains the CRD scaling problem and selective activation approach. The MRAP concepts page details pattern-based activation strategies and multiple policy coordination. Two how-to guides provide end-to-end workflows: one for users wanting to reduce CRD overhead through selective activation, and another for provider developers implementing
safe-start capability. The user guide was tested with simulated MRDs to verify the activation workflow and troubleshooting steps.