-
Story
-
Resolution: Done
-
Major
-
0.13.0
-
None
-
Documentation (Ref Guide, User Guide, etc.)
-
2020 Week 34-36 (from Aug 17), 2020 Week 37-39 (from Sep 7), 2020 Week 40-42 (from Sep 28)
As an user, I wish to configure my custom Kogito service on Kubernetes cluster to use the supported persistence layers by Kogito core. To this date, the supported persistence infrastructure are MongoDB and Infinispan.
Depending on the persistence layer chosen, the operator should get the connection information passed through the CR and inject this information in the target Kogito services. Could be more than one since an user could use the same persistence server for many custom or support services (such as Data Index).
Specific information about the persistence implementation should not be in the CR attributes like we have today, nor coupled to the KogitoService interface.
Example of a service that depends on Infinispan today:
apiVersion: app.kiegroup.org/v1alpha1 kind: KogitoDataIndex metadata: name: data-index spec: replicas: 1 image: tag: "0.12" kafka: useKogitoInfra: true infinispan: useKogitoInfra: true
The approach should be more DI, like:
apiVersion: app.kiegroup.org/v1alpha1
kind: KogitoDataIndex
metadata:
name: data-index
spec:
replicas: 1
image: myimage
# KogitoInfra with information about this persistence instance
infra:
- kogito-infinispan
---
apiVersion: app.kiegroup.org/v1alpha1
kind: KogitoInfra
metadata:
name: kogito-infinispan
spec:
implementation: infinispan
type: persistence
url: myinfinispan:9000
credentials:
secret:
userKey: username
passKey: password
So the service controller could inject all the information regards the platform into the deployed Kogito service. On "dev mode", the KogitoInfra controller could deploy infinispan via Infinispan Operator like we are doing today (see KOGITO-3142), having this info in the CR and on production users would just update the "platform" CR, not their service.
This could also be used for others use case like eventing:
apiVersion: app.kiegroup.org/v1alpha1 kind: KogitoDataIndex metadata: name: data-index spec: replicas: 1 image: myimage infra: - kogito-infinispan - kogito-knative --- apiVersion: app.kiegroup.org/v1alpha1 kind: KogitoInfra metadata: name: kogito-infinispan spec: resource: kind: app.infinispan.org/v1 namespace: infinispan-namespace name: infinispan-instance-name --- apiVersion: app.kiegroup.org/v1alpha1 kind: KogitoInfra metadata: name: kogito-knative spec: implementation: knative type: messaging topics: - name: mytopic1 type: consumed - name: mytopic2 type: produced
This is just a rough draft, more to come in the upcoming weeks with a proper design document.
- blocks
-
KOGITO-2562 Serverless Workflow support on Operator
- Resolved
-
KOGITO-2759 Kogito operator support for MongoDB persistence
- Closed
-
KOGITO-2869 Review persistence deployment on Operator
- Closed
- causes
-
KOGITO-3502 Sasl mechanism no longer set by Kogito operator
- Closed
- is blocked by
-
KOGITO-3446 Remove KAFKA_BOOTSTRAP_SERVERS env check from Jobs service scripts
- Closed
- is related to
-
KOGITO-3142 Remove third party dependencies from Kogito Operator
- Closed
-
KOGITO-3351 Research to integrate Crossplane with Kogito Operator for infra abstraction layer
- Resolved
-
KOGITO-3474 BDD tests: Update tests to reflect KogitoInfra changes
- Resolved
- relates to
-
KOGITO-3129 Kogito service infrastructure metadata endpoint support
- Closed
-
KOGITO-3552 BDD tests: Enable Trusty - Keycloak test
- Resolved
-
KOGITO-3270 Operator should support ConfigMap injecting in KogitoServices
- Closed