-
Notifications
You must be signed in to change notification settings - Fork 7
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
[Proposition]: Design a bindology service able to map the consumer and service provider parameters #295
Comments
The way I understand things in order to perform mapping we need to understand both how the
Given the lack of a standard mechanism of communicating binding information, there is no way that consumer and producer can be aligned. And this is where mapping and the idea of bindology comes in: By defining a standard way of naming things and providing mappings for all known producers and consumers we can possibly perform the actual mapping. However, this is something that I feel that needs a little bit of reasearch. So, we first need to define a group of known |
|
Yes !! |
Ideally such a mapping should be become part of a contract (= sort of mapping defined for resource type: datasource, etc) definition, stored part of Primaza and used between the consumer (= application claiming to access a service) and Primaza (= actor acting as proxy between an application = the runtime and a Service provider. |
Should we like crossplane define such mappings using a YAML template with patches and From/To maps (https://docs.crossplane.io/knowledge-base/guides/composition-functions/ or https://gist.github.com/cmoulliard/755d62e0797140f7cab85825256930cd#file-gistfile1-txt-L89) ? @iocanel @aureamunoz @Sgitario See composition reference doc explaining how they map/transform, etc: https://docs.crossplane.io/v1.12/concepts/composition/#compositions |
Proposition
The Service Binding Operator and the Service Binding spec do not really handle a contract definition (= what a consumer application and a service provider will share as list of parameters passed within a secret to configure a datasource, MongoDB, MySQL, ...) as only 2 fields are currently defined as
recommended
part of the spec: type and provider.The consequence is that it is still needed that both (= consumer and provider) verify before to bind a service how the secret should be populated to match exactly what the runtime library expect to get and to consume from the workload projection (= where key/values will be stored under the runtime local filesystem mounted from a volume).
To overcome this problem, we propose to design a new service able to perform what it is described hereafter:
The YAML created/generated file could help to do:
To map them using a glossary to something that the servicebinding tool understands. Example: The datasource expects to get by example the property
jdbc-url
- https://quarkiverse.github.io/quarkiverse-docs/quarkus-jdbc-sqlite/dev/datasource.html. Such a property/parameter is relevant for a java application/runtimes, will be different for nodejs, etc and is not understandable as such by the ServiceBinding tool. If now, we declare somewhere that the propertyjdbc-url
for the java runtimes matches the service bindingurl
, than the SB tool will be able to populate correctly the following projectionWhere the mapping can take place
We have potentially 2 options, depending where we prefer to do the mapping :
WDYT ? @iocanel
The text was updated successfully, but these errors were encountered: