-
Feature Request
-
Resolution: Unresolved
-
Undefined
-
None
-
None
-
None
-
None
-
Product / Portfolio Work
-
None
-
False
-
-
None
-
None
-
None
-
-
None
-
None
-
None
-
None
-
None
Problem:
OLMv1's dependency model is static and evaluated only at install time. This forces operator developers to implement complex, custom controller logic to manage the lifecycle of optional or dynamically required operators based on runtime conditions (e.g., a feature flag in a CR). This approach is inefficient, error-prone, and adds significant boilerplate code.
Proposal:
Introduce a new, optional CRD, ClusterExtensionActivation, and a corresponding controller to the OLM ecosystem. This CRD would declaratively manage the lifecycle of a ClusterExtension.
- spec.template: A template for the ClusterExtension to be created.
- spec.conditions: A list of triggers that must be met for the activation to proceed. A condition is defined by:
- objectSelector: Selects one or more Kubernetes objects to watch (by name, label, or CRD).
**expression: (Optional) A CEL expression evaluated against the selected objects (selection) to provide fine-grained control.
- objectSelector: Selects one or more Kubernetes objects to watch (by name, label, or CRD).
How it Works:
The new controller watches ClusterExtensionActivation resources. When its conditions are met, the controller creates the managed ClusterExtension from the template. If the conditions cease to be met, the controller automatically deletes the ClusterExtension, allowing OLM to perform a clean uninstallation.
Benefit:
This feature offloads complex dynamic lifecycle management from operator business logic to a dedicated, declarative, and reusable OLM component. It significantly simplifies the development of modular, platform-style operators and enables powerful, event-driven automation for IDPs.