Closed arthurdm closed 3 years ago
We can introduce a recommendation for all the implementors of the ServiceBinding to have special annotation in the ServiceBinding CRD to identify the supported extensions. The annotation value could be a list of comma-separated supported extensions.
Here is an example:
extensions.service.binding/supported: "olm-descriptor-secret-generator,json-path-mapper,go-v1-template-mapper,type-provider-mapper"
An absolute requirement would be the implementation should look for a specific annotation extensions.service.binding/enabled
in the ServiceBinding resource to enable extensions selectively. If the annotation doesn't exist, the implementation can enable all the supported extensions.
Here is an example:
extensions.service.binding/enabled: "json-path-mapper,olm-descriptor-secret-generator"
To disable all the extension, the user can add an empty value:
extensions.service.binding/enabled: ""
The spec can maintain a canonical list of all the extension names.
This will improve the portability of ServiceBinding resources across implementations.
Is this still a concern with the recent proposal to remove extensions from the spec?
We have many fewer extensions now, all centered around mapping, and each represented by a concrete CRD. @arthurdm how do you feel about closing this now?
Agreed.
Given that this spec has a few different extension capabilities and that we expect to have different implementations there are scenarios where users (an actual person, or an automated tool) need to know which extensions (if any) are supported in a given implementation. This allows higher frameworks to enable or disable features that depend on certain extensions.
This issue will explore the idea of being able to query an implementation's set of supported extensions. This is a bit related to https://github.com/k8s-service-bindings/spec/issues/114, but even between different clusters there is a use case to check what the implementation supports.