Skip to content

Instantly share code, notes, and snippets.

@r00ta
Created September 8, 2020 13:44
Show Gist options
  • Save r00ta/9eb65a1a3a30cc12cfbfd0431a73db72 to your computer and use it in GitHub Desktop.
Save r00ta/9eb65a1a3a30cc12cfbfd0431a73db72 to your computer and use it in GitHub Desktop.

Create a new namespace

kubectl create namespace my-test

Create a new identity for infinispan identity.yaml with content

credentials:
- username: testuser
  password: testpassword

and deploy with kubectl create secret generic --from-file=identity.yaml external-infinispan-secret -n my-test

Install the infinispan operator

INFINISPAN_VERSION=1.1.1.Final
kubectl apply -f "https://raw.githubusercontent.com/infinispan/infinispan-operator/${INFINISPAN_VERSION}/deploy/crd.yaml" -n my-test
kubectl apply -f "https://raw.githubusercontent.com/infinispan/infinispan-operator/${INFINISPAN_VERSION}/deploy/rbac.yaml" -n my-test
kubectl apply -f "https://raw.githubusercontent.com/infinispan/infinispan-operator/${INFINISPAN_VERSION}/deploy/operator.yaml" -n my-test

According to https://infinispan.org/infinispan-operator/master/operator.html#adding_credentials-security, deploy an infinispan cluster infinispan-minimal.yaml with content

apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
  name: example-infinispan
spec:
  replicas: 2
  security:
    endpointSecretName: external-infinispan-secret

Deploy kogito trusty secrets trusty-secrets.yaml with content

apiVersion: v1
kind: Secret
metadata:
  name: kogito-external-infinispan-secret
type: Opaque
data:
  user: dGVzdHVzZXI= 
  pass: dGVzdHBhc3N3b3Jk

Install kafka

TARGET_DIR="/tmp"
STRIMZI_VERSION=0.17.0
wget "https://github.com/strimzi/strimzi-kafka-operator/releases/download/${STRIMZI_VERSION}/strimzi-${STRIMZI_VERSION}.tar.gz"
tar zxf "${TARGET_DIR}/strimzi-${STRIMZI_VERSION}.tar.gz" -C "$TARGET_DIR" 
find ${TARGET_DIR}/strimzi-${STRIMZI_VERSION}/install/cluster-operator -name '*RoleBinding*.yaml' -type f -exec sed -i "s/namespace: .*/namespace: trusty-demo/" {} \;
kubectl apply -f ${TARGET_DIR}/strimzi-${STRIMZI_VERSION}/install/cluster-operator/ -n my-test

And deploy a kafka broker kafka.yaml

apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    replicas: 1
    listeners:
      plain: {}
      tls: {}
      external:
        type: nodeport
        tls: false
    storage:
      type: jbod
      volumes:
      - id: 0
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
    config:
      offsets.topic.replication.factor: 1
      transaction.state.log.replication.factor: 1
      transaction.state.log.min.isr: 1
  zookeeper:
    replicas: 1
    storage:
      type: persistent-claim
      size: 100Gi
      deleteClaim: false
  entityOperator:
    topicOperator: {}
    userOperator: {}

Create the kafka topics

apiVersion: kafka.strimzi.io/v1beta1
kind: KafkaTopic
metadata:
  name: trusty-explainability-request
  labels:
    strimzi.io/cluster: "my-cluster"
spec:
  partitions: 1
  replicas: 1
---
apiVersion: kafka.strimzi.io/v1beta1
kind: KafkaTopic
metadata:
  name: trusty-explainability-result
  labels:
    strimzi.io/cluster: "my-cluster"
spec:
  partitions: 1
  replicas: 1
---
apiVersion: kafka.strimzi.io/v1beta1
kind: KafkaTopic
metadata:
  name: kogito-tracing-decision
  labels:
    strimzi.io/cluster: "my-cluster"
spec:
  partitions: 1
  replicas: 1
---
apiVersion: kafka.strimzi.io/v1beta1
kind: KafkaTopic
metadata:
  name: trusty-explainability-request
  labels:
    strimzi.io/cluster: "my-cluster"
spec:
  partitions: 1
  replicas: 1
---
apiVersion: kafka.strimzi.io/v1beta1
kind: KafkaTopic
metadata:
  name: kogito-tracing-model 
  labels:
    strimzi.io/cluster: "my-cluster"
spec:
  partitions: 1
  replicas: 1
---

And finally deploy the trusty instance

apiVersion: app.kiegroup.org/v1alpha1
kind: KogitoTrusty
metadata:
  name: trusty
  labels:
    app: trusty
spec:
  replicas: 1
  image:
    domain: quay.io
    namespace: kiegroup
    name: kogito-trusty-nightly
    tag: 'latest'
  selector:
    app: trusty
  kafka:
    externalURI: my-cluster-kafka-bootstrap:9092 
  infinispan:
    uri: example-infinispan:11222 
    useAuth: true
    credentials:
      secretName: kogito-external-infinispan-secret
      usernameKey: user 
      passwordKey: pass 
    saslMechanism: DIGEST-MD5
    useKogitoInfra: false

There should be already some errors in the logs of the container about the connection with infinispan. But if this is not the case you can deploy the dmn-tracing-quarkus example to trigger the creation of the cache and get the error:

You will need to deploy the resources from the operator folder

kubectl apply -f deploy/service_account.yaml -n my-test
kubectl apply -f deploy/role.yaml -n my-test
kubectl apply -f deploy/role_binding.yaml -n my-test

And deploy the service dmn-tracing-quarkus.yaml

apiVersion: app.kiegroup.org/v1alpha1
kind: KogitoRuntime
metadata:
  name: dmn-tracing-quarkus
spec:
  replicas: 1
  image:
    domain: quay.io
    namespace: jrota 
    name: dmn-tracing-quarkus
    tag: snap-1.9
  selector:
    app: dmn-tracing-quarkus 
  kafka:
    externalURI: my-cluster-kafka-bootstrap:9092 
status:
  externalURI: "http://dmn-tracing-quarkus:8080"
  conditions:
    - lastTransitionTime: "1985-04-12T23:20:50.52Z"
      lastUpdateTime: "1985-04-12T23:20:50.52Z"
      message: ""
      reason: ""
      status: ""
      type: ""

and expose it with

kubectl expose deployment dmn-tracing-quarkus -n my-test  --type=NodePort --name=dmn-tracing-quarkus-np
minikube service dmn-tracing-quarkus-np -n my-test

get the minikube ip with minikube ip and access the swagger ui for example in my case at http://172.17.0.3:32040/swagger-ui

execute a post request at /LoanEligibility with the payload

{"Bribe": 1000,"Client": {"age": 43,"existing payments": 100,"salary": 1950},"Loan": {"duration": 15,"installment": 180}, "SupremeDirector": "Yes"}

And check the logs of the trusty pod again. The error is like the following

2020-09-08 13:37:49,479 WARNING [io.ver.cor.imp.BlockedThreadChecker] (vertx-blocked-thread-checker) Thread Thread[vert.x-eventloop-thread-1,5,main]=Thread[vert.x-eventloop-thread-1,5,main] has been blocked for 3582 ms, time limit is 2000 ms: io.vertx.core.VertxException: Thread blocked
	at java.base@11.0.8/jdk.internal.misc.Unsafe.park(Native Method)
	at java.base@11.0.8/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
	at java.base@11.0.8/java.util.concurrent.CompletableFuture$Signaller.block(CompletableFuture.java:1798)
	at java.base@11.0.8/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3128)
	at java.base@11.0.8/java.util.concurrent.CompletableFuture.timedGet(CompletableFuture.java:1868)
	at java.base@11.0.8/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2021)
	at app//org.infinispan.client.hotrod.impl.Util.await(Util.java:51)
	at app//org.infinispan.client.hotrod.RemoteCacheManager.createRemoteCache(RemoteCacheManager.java:475)
	at app//org.infinispan.client.hotrod.RemoteCacheManager.getCache(RemoteCacheManager.java:314)
	at app//org.infinispan.client.hotrod.RemoteCacheManager.getCache(RemoteCacheManager.java:278)
	at app//org.kie.kogito.persistence.infinispan.cache.InfinispanCacheManager.getOrCreateCache(InfinispanCacheManager.java:82)
	at app//org.kie.kogito.persistence.infinispan.cache.InfinispanCacheManager.getCache(InfinispanCacheManager.java:106)
	at app//org.kie.kogito.persistence.infinispan.cache.InfinispanCacheManager_ClientProxy.getCache(InfinispanCacheManager_ClientProxy.zig:253)
	at app//org.kie.kogito.trusty.storage.api.TrustyStorageServiceImpl.getDecisionsStorage(TrustyStorageServiceImpl.java:39)
	at app//org.kie.kogito.trusty.storage.api.TrustyStorageServiceImpl_ClientProxy.getDecisionsStorage(TrustyStorageServiceImpl_ClientProxy.zig:212)
	at app//org.kie.kogito.trusty.service.TrustyServiceImpl.storeDecision(TrustyServiceImpl.java:112)
	at app//org.kie.kogito.trusty.service.TrustyServiceImpl.processDecision(TrustyServiceImpl.java:126)
	at app//org.kie.kogito.trusty.service.TrustyServiceImpl_ClientProxy.processDecision(TrustyServiceImpl_ClientProxy.zig:273)
	at app//org.kie.kogito.trusty.service.messaging.incoming.TraceEventConsumer.handleCloudEvent(TraceEventConsumer.java:77)
	at app//org.kie.kogito.trusty.service.messaging.BaseEventConsumer$$Lambda$777/0x0000000840584040.accept(Unknown Source)
	at java.base@11.0.8/java.util.Optional.ifPresent(Optional.java:183)
	at app//org.kie.kogito.trusty.service.messaging.BaseEventConsumer.handleMessage(BaseEventConsumer.java:46)
	at app//org.kie.kogito.trusty.service.messaging.incoming.TraceEventConsumer.handleMessage(TraceEventConsumer.java:53)
	at app//org.kie.kogito.trusty.service.messaging.incoming.TraceEventConsumer_ClientProxy.handleMessage(TraceEventConsumer_ClientProxy.zig:265)
	at app//org.kie.kogito.trusty.service.messaging.incoming.TraceEventConsumer_SmallRyeMessagingInvoker_handleMessage_0a3202593771bc7690b17ee1bf6da29477fe226e.invoke(TraceEventConsumer_SmallRyeMessagingInvoker_handleMessage_0a3202593771bc7690b17ee1bf6da29477fe226e.zig:48)
	at app//io.smallrye.reactive.messaging.AbstractMediator.invoke(AbstractMediator.java:79)
	at app//io.smallrye.reactive.messaging.SubscriberMediator.lambda$null$10(SubscriberMediator.java:181)
	at app//io.smallrye.reactive.messaging.SubscriberMediator$$Lambda$742/0x00000008404f0840.apply(Unknown Source)
	at app//io.smallrye.mutiny.operators.UniOnItemTransformToUni.invokeAndSubstitute(UniOnItemTransformToUni.java:31)
	at app//io.smallrye.mutiny.operators.UniOnItemTransformToUni$2.onItem(UniOnItemTransformToUni.java:74)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$1.lambda$onItem$1(ContextPropagationUniInterceptor.java:35)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$1$$Lambda$423/0x00000008403c9440.run(Unknown Source)
	at app//io.smallrye.context.SmallRyeThreadContext.lambda$withContext$0(SmallRyeThreadContext.java:217)
	at app//io.smallrye.context.SmallRyeThreadContext$$Lambda$269/0x00000008402ed440.execute(Unknown Source)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$1.onItem(ContextPropagationUniInterceptor.java:35)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.onItem(UniSerializedSubscriber.java:72)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$1.lambda$onItem$1(ContextPropagationUniInterceptor.java:35)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$1$$Lambda$423/0x00000008403c9440.run(Unknown Source)
	at app//io.smallrye.context.SmallRyeThreadContext.lambda$withContext$0(SmallRyeThreadContext.java:217)
	at app//io.smallrye.context.SmallRyeThreadContext$$Lambda$269/0x00000008402ed440.execute(Unknown Source)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$1.onItem(ContextPropagationUniInterceptor.java:35)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.onItem(UniSerializedSubscriber.java:72)
	at app//io.smallrye.mutiny.operators.UniCreateFromCompletionStage.lambda$forwardFromCompletionStage$1(UniCreateFromCompletionStage.java:30)
	at app//io.smallrye.mutiny.operators.UniCreateFromCompletionStage$$Lambda$745/0x00000008404f2040.accept(Unknown Source)
	at java.base@11.0.8/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
	at java.base@11.0.8/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:883)
	at java.base@11.0.8/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2251)
	at java.base@11.0.8/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:143)
	at app//io.smallrye.mutiny.operators.UniCreateFromCompletionStage.forwardFromCompletionStage(UniCreateFromCompletionStage.java:22)
	at app//io.smallrye.mutiny.operators.UniCreateFromCompletionStage.subscribing(UniCreateFromCompletionStage.java:50)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:43)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:38)
	at app//io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:30)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2.lambda$subscribing$0(ContextPropagationUniInterceptor.java:51)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2$$Lambda$329/0x00000008403a1c40.run(Unknown Source)
	at app//io.smallrye.context.SmallRyeThreadContext.lambda$withContext$0(SmallRyeThreadContext.java:217)
	at app//io.smallrye.context.SmallRyeThreadContext$$Lambda$269/0x00000008402ed440.execute(Unknown Source)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2.subscribing(ContextPropagationUniInterceptor.java:51)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:43)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:38)
	at app//io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:30)
	at app//io.smallrye.mutiny.operators.UniOnItemTransformToUni.subscribing(UniOnItemTransformToUni.java:65)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:43)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:38)
	at app//io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:30)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2.lambda$subscribing$0(ContextPropagationUniInterceptor.java:51)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2$$Lambda$329/0x00000008403a1c40.run(Unknown Source)
	at app//io.smallrye.context.SmallRyeThreadContext.lambda$withContext$0(SmallRyeThreadContext.java:217)
	at app//io.smallrye.context.SmallRyeThreadContext$$Lambda$269/0x00000008402ed440.execute(Unknown Source)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2.subscribing(ContextPropagationUniInterceptor.java:51)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:43)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:38)
	at app//io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:30)
	at app//io.smallrye.mutiny.operators.UniOnItemOrFailureFlatMap.subscribing(UniOnItemOrFailureFlatMap.java:48)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:43)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:38)
	at app//io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:30)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2.lambda$subscribing$0(ContextPropagationUniInterceptor.java:51)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2$$Lambda$329/0x00000008403a1c40.run(Unknown Source)
	at app//io.smallrye.context.SmallRyeThreadContext.lambda$withContext$0(SmallRyeThreadContext.java:217)
	at app//io.smallrye.context.SmallRyeThreadContext$$Lambda$269/0x00000008402ed440.execute(Unknown Source)
	at app//io.smallrye.mutiny.context.ContextPropagationUniInterceptor$2.subscribing(ContextPropagationUniInterceptor.java:51)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:43)
	at app//io.smallrye.mutiny.operators.UniSerializedSubscriber.subscribe(UniSerializedSubscriber.java:38)
	at app//io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:30)
	at app//io.smallrye.mutiny.operators.UniSubscribeToCompletionStage.subscribe(UniSubscribeToCompletionStage.java:32)
	at app//io.smallrye.mutiny.groups.UniSubscribe.asCompletionStage(UniSubscribe.java:104)
	at app//io.smallrye.mutiny.Uni.subscribeAsCompletionStage(Uni.java:162)
	at app//io.smallrye.reactive.messaging.SubscriberMediator.lambda$processMethodReturningACompletionStage$11(SubscriberMediator.java:186)
	at app//io.smallrye.reactive.messaging.SubscriberMediator$$Lambda$294/0x0000000840303040.apply(Unknown Source)
	at app//io.smallrye.mutiny.streams.stages.FlatMapCompletionStageFactory$FlatMapCompletionStage.lambda$apply$0(FlatMapCompletionStageFactory.java:46)
	at app//io.smallrye.mutiny.streams.stages.FlatMapCompletionStageFactory$FlatMapCompletionStage$$Lambda$318/0x0000000840379840.apply(Unknown Source)
	at app//io.smallrye.mutiny.groups.MultiOnItem.lambda$transformToUni$5(MultiOnItem.java:290)
	at app//io.smallrye.mutiny.groups.MultiOnItem$$Lambda$319/0x0000000840379c40.apply(Unknown Source)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment