Uploaded image for project: 'Service Binding'
  1. Service Binding
  2. APPSVC-157

Support "what to bind" metadata as CRD annotations

XMLWordPrintable

    • App Services Sprint 174

      Description:

      For being more upstream friendly, folks have asked for non-OLM ways of letting operator authors define what is interesting for binding. Given that we did not find a good way to use the OpenAPI validation spec for letting operator authors express what is interesting for binding, we could let operator authors express the same information as annotations in the backing service CRD.

       

      This is how the CRD annotations could look like:

      kind: CustomResourceDefinition
      apiVersion: apiextensions.k8s.io/v1beta1
      metadata:
        name: databases.postgresql.baiju.dev
        annotations:
          servicebindingoperator.redhat.io/status.dbConfigMap.password: 'volume:configmap'
          servicebindingoperator.redhat.io/status.dbConfigMap.username: 'env:configmap'
          servicebindingoperator.redhat.io/status.dbName: env
          servicebindingoperator.redhat.io/spec.Token.private: 'env:secret' 
      spec:
        group: postgresql.baiju.dev
        version: v1alpha1
        names:
          plural: databases
          singular: database
          shortNames:
            - db
          kind: Database
          listKind: DatabaseList
        scope: Namespaced
        validation:
          openAPIV3Schema:
            properties:
              apiVersion:
                description: >-
                  APIVersion defines the versioned schema of this representation of an
                  object. Servers should convert recognized schemas to the latest
                  internal value, and may reject unrecognized values.
                type: string
              kind:
                description: >-
                  Kind is a string value representing the REST resource this object
                  represents. Servers may infer this from the endpoint the client
                  submits requests to.
                type: string
              metadata:
                type: object
              spec:
                type: object
              status:
                type: object
        subresources:
          status: {}
        versions:
          - name: v1alpha1
            served: true
            storage: true
        conversion:
          strategy: None
      status:
        conditions:
          - type: NamesAccepted
            status: 'True'
            lastTransitionTime: '2019-09-16T09:37:26Z'
            reason: NoConflicts
            message: no conflicts found
          - type: Established
            status: 'True'
            lastTransitionTime: null
            reason: InitialNamesAccepted
            message: the initial names have been accepted
        acceptedNames:
          plural: databases
          singular: database
          shortNames:
            - db
          kind: Database
          listKind: DatabaseList
        storedVersions:
          - v1alpha1
      

              bmuthuka Baiju Muthukadan
              shbose Shoubhik Bose
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: