servicebinding / spec

Specification for binding services to k8s workloads
https://servicebinding.io
Apache License 2.0
92 stars 35 forks source link

Mechanism to discover extension capabilities #123

Closed arthurdm closed 3 years ago

arthurdm commented 4 years ago

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.

baijum commented 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.

scothis commented 3 years ago

Is this still a concern with the recent proposal to remove extensions from the spec?

nebhale commented 3 years ago

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?

arthurdm commented 3 years ago

Agreed.