/service-binding-specification

Specification for binding services to k8s applications

Service Binding Specification

Specification for binding services to runtime applications running in Kubernetes.

Terminology definition

  • service - any software that is exposing functionality. Could be a RESTful application, a database, an event stream, etc.
  • application - in this specification we refer to a single runtime-based microservice (e.g. MicroProfile app, or Node Express app) as an application. This is different than an umbrella (SIG) Application which refers to a set of microservices.
  • binding - providing the necessary information for an application to connect to a service.
  • secret - refers to a Kubernetes Secret.
  • config map - refers to a Kubernetes ConfigMap.

Motivation

  • Need a consistent way to bind k8s application to services (applications, databases, event streams, etc)
  • A standard / spec / RFC will enable adoption from different service providers
  • Cloud Foundry has done this well.  The equivalent is not available for k8s.

Proposal

Main section of the doc. Has sub-section that outline the design.

1. Making a service bindable

  • What metadata is needed for a service to be bindable (e.g. name of fields it supports, name of secret it produces, etc)
  • Where is this information located

2. Service Binding Schema

  • What is the schema of a Service Binding object / structure.
  • What metadata goes along that describes it

3. Request service binding

  • How do we request a binding from a service (assume the service has been provisioned)

4. Mounting binding information

  • Where in the container do we mount the binding information (e.g. what is the structure of the folders / files)
  • Consideration with clusters, namespaces, or VMs

Extra: Consuming binding

  • How are application expected to consume binding information
  • Each framework may take a different approach, so this is about samples & recommendations (best practices)
  • Validates the design