salaboy / knative-event-producer

0 stars 1 forks source link

400 Bad Request when curling the event producer to emit a CloudEvent to the Knative Hello World Service #1

Closed bmutziu closed 2 years ago

bmutziu commented 3 years ago

Hello,

Please find here the relevant information:

❯ curl http://knative-event-producer.default.34.138.134.65.nip.io/bmutziu -v

❯ kubectl logs deployment.apps/knative-event-producer-7qpdz-deployment -f -c user-container

. _ _ /\ / '_ () \ \ \ \ ( ( )\ | ' | '| | ' \/ ` | \ \ \ \ \/ _)| |)| | | | | || (| | ) ) ) ) ' |__| .|| ||| |\, | / / / / =========|_|==============|__/=//// :: Spring Boot :: (v2.2.4.RELEASE)

2021-09-01 07:47:17.685 INFO 1 --- [ main] .s.k.e.p.KnativeEventProducerApplication : Starting KnativeEventProducerApplication v0.0.1-SNAPSHOT on knative-event-producer-7qpdz-deployment-6c4bfb5cd-rcl97 with PID 1 (/app.jar started by root in /) 2021-09-01 07:47:17.696 INFO 1 --- [ main] .s.k.e.p.KnativeEventProducerApplication : No active profile set, falling back to default profiles: default 2021-09-01 07:47:22.041 INFO 1 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator' 2021-09-01 07:47:23.393 INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8080 2021-09-01 07:47:23.405 INFO 1 --- [ main] .s.k.e.p.KnativeEventProducerApplication : Started KnativeEventProducerApplication in 6.782 seconds (JVM running for 8.5) 2021-09-01 07:47:23.978 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : HOST: http://knative-hello-world.default.34.138.134.65.nip.io 2021-09-01 07:47:24.060 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Request: POST - http://knative-hello-world.default.34.138.134.65.nip.io 2021-09-01 07:47:24.063 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Id=ABC-123 2021-09-01 07:47:24.064 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Specversion=1.0 2021-09-01 07:47:24.064 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Content-Type=application/json 2021-09-01 07:47:24.065 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Type=MyCloudEvent.JustHappened 2021-09-01 07:47:24.065 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Time=2021-09-01T07:47:24.040669Z 2021-09-01 07:47:24.065 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Source=knative-event-producer.default.svc.cluster.local 2021-09-01 07:47:24.066 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Subject=null org.springframework.web.reactive.function.client.WebClientResponseException$BadRequest: 400 Bad Request from POST http://knative-hello-world.default.34.138.134.65.nip.io at org.springframework.web.reactive.function.client.WebClientResponseException.create(WebClientResponseException.java:179) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Error has been observed at the following site(s): |_ checkpoint ⇢ 400 from POST http://knative-hello-world.default.34.138.134.65.nip.io [DefaultWebClient] Stack trace: at org.springframework.web.reactive.function.client.WebClientResponseException.create(WebClientResponseException.java:179) at org.springframework.web.reactive.function.client.DefaultClientResponse.lambda$createException$1(DefaultClientResponse.java:209) at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:100) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:92) at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onNext(FluxContextStart.java:103) at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onNext(FluxContextStart.java:103) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:287) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:330) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1637) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136) at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:252) at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:252) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136) at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:419) at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:209) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:367) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:363) at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:412) at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:572) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:90) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:321) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:295) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Unknown Source)

Every 7,0s: kubectl get pods -n default Ana-MacMini: Wed Sep 1 10:47:48 2021

NAME READY STATUS RESTARTS AGE knative-event-producer-7qpdz-deployment-6c4bfb5cd-rcl97 2/2 Running 0 35s knative-hello-world-78hgw-deployment-b655fd4cb-m9zvv 2/2 Running 0 24s

Thanks !

salaboy commented 3 years ago

Ok, the event producer is quite simple it just sends a CloudEvent to the service that you have specified in the HOST variable.. so can you check the target service logs?

salaboy commented 3 years ago

Also, that blog is quite old and there are new releases of Knative with different networking layers. Where do you have knative installed (KinD, GKE, AKS?) and which version are you using? I should refresh that blog post to use:

curl -sL get.konk.dev | bash
bmutziu commented 3 years ago

❯ kubectl logs deployment.apps/knative-hello-world-78hgw-deployment -f -c user-container

. _ _ /\ / '_ () \ \ \ \ ( ( )\ | ' | '| | ' \/ ` | \ \ \ \ \/ _)| |)| | | | | || (| | ) ) ) ) ' |__| .|| ||| |\, | / / / / =========|_|==============|__/=//// :: Spring Boot :: (v2.2.6.RELEASE)

2021-09-01 08:30:04.304 INFO 1 --- [ main] c.s.k.k.KnativeHelloWorldApplication : Starting KnativeHelloWorldApplication v0.0.1-SNAPSHOT on knative-hello-world-78hgw-deployment-b655fd4cb-b9dws with PID 1 (/app.jar started by root in /) 2021-09-01 08:30:04.312 INFO 1 --- [ main] c.s.k.k.KnativeHelloWorldApplication : No active profile set, falling back to default profiles: default 2021-09-01 08:30:10.451 INFO 1 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator' 2021-09-01 08:30:12.255 INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8080 2021-09-01 08:30:12.323 INFO 1 --- [ main] c.s.k.k.KnativeHelloWorldApplication : Started KnativeHelloWorldApplication in 9.689 seconds (JVM running for 11.543)

As for Knative version and Cloud Provider:

❯ kubectl describe namespace knative-serving

Name: knative-serving Labels: istio-injection=enabled serving.knative.dev/release=v0.15.0 Annotations: gloo.solo.io/glooctl_install_info: {"version":"0.15.0","monitoring":false,"eventing":false,"eventingVersion":"0.10.0"} Status: Active

Resource Quotas Name: gke-resource-quotas Resource Used Hard


count/ingresses.extensions 0 100 count/ingresses.networking.k8s.io 0 100 count/jobs.batch 0 5k pods 5 1500 services 5 500

No LimitRange resource.

knative-event-producer git/master* ❯ kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME gke-devops-selfservi-devops-selfservi-fe498350-s60j Ready 2d22h v1.20.8-gke.2100 10.142.0.6 34.74.177.249 Ubuntu 20.04.2 LTS 5.4.0-1046-gke docker://19.3.8

The old version from the blog -0.12.0- was not working at all ...

It seems that the request is silently dropped w/ a HTTP 400 Bad Request. It worths for you to spend time debugging this or we should just drop it ?

My intent is to thorough understand all the aspects of your nice work there :)

(I know you made this -https://github.com/salaboy/from-monolith-to-k8s- but I wanted to start from bottom ...)

salaboy commented 3 years ago

yeah, but you are still on a very old version.. Try creating the cluster on KIND with KonK ->

curl -sL get.konk.dev | bash

And then run with 0.24 or 0.25, with your help I can upgrade the blog post.

bmutziu commented 3 years ago

All right, I'll start doing that when time permits. Sure, let's refresh this knowledge:)

joi, 2 sept. 2021, 10:30 salaboy @.***> a scris:

yeah, but you are still on a very old version.. Try creating the cluster on KIND with KonK ->

curl -sL get.konk.dev | bash

And then run with 0.24 or 0.25, with your help I can upgrade the blog post.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/salaboy/knative-event-producer/issues/1#issuecomment-911314378, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADDSI24A5H2MQFIGR2WYZULT74RYVANCNFSM5DF3KT4A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

bmutziu commented 3 years ago

Did the KonK stuff w/ KIND and applied some samples for serving and eventing (courtesy of https://github.com/csantanapr/knative-kind):

knative-kind git/master* 18s ❯ ./install.sh ✅ Checking dependencies... KinD version is kind v0.11.1 go1.16.4 linux/amd64 Creating cluster "knative" ... ✓ Ensuring node image (kindest/node:v1.21.1) 🖼 ✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 ✓ Waiting ≤ 2m0s for control-plane = Ready ⏳ • Ready after 35s 💚 Set kubectl context to "kind-knative" You can now use your cluster with:

kubectl cluster-info --context kind-knative

Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂 🍿 Installing Knative Serving... 0.25.0 Warning: policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget 🔌 Installing Knative Serving Networking Layer kourier... configmap/config-network patched service/kourier-ingress created configmap/config-domain patched 🔥 Installing Knative Eventing... 0.25.0 Warning: policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget broker.eventing.knative.dev/example-broker created NAME URL AGE READY REASON example-broker http://broker-ingress.knative-eventing.svc.cluster.local/default/example-broker 11s True 🚀 Knative install took: 6m16s 🎉 Now have some fun with Serverless and Event Driven Apps

knative-kind git/master* 376s ❯ kubectl describe namespace knative-serving

Name: knative-serving Labels: app.kubernetes.io/part-of=knative-serving app.kubernetes.io/version=0.25.0 kubernetes.io/metadata.name=knative-serving serving.knative.dev/release=v0.25.0 Annotations: Status: Active

No resource quota.

No LimitRange resource.

knative-kind git/master* ❯ kubectl get ns

NAME STATUS AGE default Active 5m25s knative-eventing Active 2m13s knative-serving Active 4m17s kourier-system Active 3m8s kube-node-lease Active 5m29s kube-public Active 5m30s kube-system Active 5m30s local-path-storage Active 5m16s

knative-kind git/master* ❯ kubectl describe namespace knative-eventing

Name: knative-eventing Labels: eventing.knative.dev/release=v0.25.0 kubernetes.io/metadata.name=knative-eventing Annotations: Status: Active

No resource quota.

No LimitRange resource.

knative-kind git/master* ❯ kubectl describe namespace kourier-system

Name: kourier-system Labels: kubernetes.io/metadata.name=kourier-system networking.knative.dev/ingress-provider=kourier serving.knative.dev/release=v0.24.0 Annotations: Status: Active

No resource quota.

No LimitRange resource.

knative-kind git/master* ❯ echo "kubectl get ksvc,broker,trigger" kubectl -n default get ksvc,broker,trigger kubectl get ksvc,broker,trigger NAME URL AGE READY REASON broker.eventing.knative.dev/example-broker http://broker-ingress.knative-eventing.svc.cluster.local/default/example-broker 75s True

knative-kind git/master* ❯ ./03-serving-samples.sh service.serving.knative.dev/hello created Downloading hello App container image... The Knative Service hello endpoint is http://hello.default.127.0.0.1.nip.io Hello Knative!

knative-kind git/master* 123s ❯ kubectl get pod -l serving.knative.dev/service=hello -w

NAME READY STATUS RESTARTS AGE hello-00001-deployment-85b58bfbc4-6ptfv 1/2 Terminating 0 2m7s hello-00001-deployment-85b58bfbc4-6ptfv 0/2 Terminating 0 2m35s hello-00001-deployment-85b58bfbc4-6ptfv 0/2 Terminating 0 2m36s hello-00001-deployment-85b58bfbc4-6ptfv 0/2 Terminating 0 2m36s ^C%
knative-kind git/master* 33s ❯ ./05-eventing-samples.sh deployment.apps/hello-display created service/hello-display created trigger.eventing.knative.dev/hello-display created clusterdomainclaim.networking.internal.knative.dev/broker-ingress.knative-eventing.127.0.0.1.nip.io created domainmapping.serving.knative.dev/broker-ingress.knative-eventing.127.0.0.1.nip.io created Sending Cloud Event to event broker Cloud Event Delivered "msg": "Hello Knative!"

knative-kind git/master* 23s ❯ NAMESPACE=default;kubectl -n $NAMESPACE logs -l app=hello-display --tail=100 ☁️ cloudevents.Event Validation: valid Context Attributes, specversion: 1.0 type: greeting source: not-sendoff id: say-hello datacontenttype: application/json Extensions, knativearrivaltime: 2021-09-04T09:44:00.021006682Z Data, { "msg": "Hello Knative!" }

Next I will rerun the code and let you know about it ...

bmutziu commented 3 years ago

What I've done extra:

❯ cat kservice.yaml apiVersion: serving.knative.dev/v1 kind: Service metadata: name: knative-event-producer spec: template: spec: containers:

NAMESPACE=${NAMESPACE:-default} BROKER_NAME=${BROKER_NAME:-example-broker}

❯ kubectl -n $NAMESPACE apply -f - << EOF apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: hello-display spec: broker: $BROKER_NAME filter: attributes: type: MyCloudEvent.JustHappened subscriber: ref: apiVersion: v1 kind: Service name: knative-hello-world-00001 EOF

trigger.eventing.knative.dev/hello-display created

knative-kind git/master* ❯ # Exposing broker externally using Knative Domain Mapping kubectl apply -f - <<EOF apiVersion: networking.internal.knative.dev/v1alpha1 kind: ClusterDomainClaim metadata: name: broker-ingress.knative-eventing.127.0.0.1.nip.io spec: namespace: knative-eventing EOF

clusterdomainclaim.networking.internal.knative.dev/broker-ingress.knative-eventing.127.0.0.1.nip.io created

knative-kind git/master* ❯ kubectl -n knative-eventing apply -f - << EOF apiVersion: serving.knative.dev/v1alpha1 kind: DomainMapping metadata: name: broker-ingress.knative-eventing.127.0.0.1.nip.io spec: ref: name: broker-ingress kind: Service apiVersion: v1 EOF

sleep 2 kubectl wait -n knative-eventing DomainMapping broker-ingress.knative-eventing.127.0.0.1.nip.io --timeout=-1s --for=condition=Ready > /dev/null

domainmapping.serving.knative.dev/broker-ingress.knative-eventing.127.0.0.1.nip.io created

Results:

Every 7,0s: kubectl get pods -n default Ana-MacMini: Fri Sep 10 14:27:54 2021

NAME READY STATUS RESTARTS AGE knative-event-producer-00001-deployment-7ff498845-wwvc6 2/2 Running 0 37s knative-hello-world-00001-deployment-775844b954-nz2jh 2/2 Running 0 25s

knative-kind git/master* ❯ curl http://knative-event-producer.default.127.0.0.1.nip.io/bmutziu -v

knative-kind git/master* 12s ❯ kubectl get ksvc NAME URL LATESTCREATED LATESTREADY READY REASON knative-event-producer http://knative-event-producer.default.127.0.0.1.nip.io knative-event-producer-00001 knative-event-producer-00001 True knative-hello-world http://knative-hello-world.default.127.0.0.1.nip.io knative-hello-world-00001 knative-hello-world-00001 True

knative-kind git/master* ❯ kubectl get svc -A NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default example-broker-kne-trigger-kn-channel ExternalName imc-dispatcher.knative-eventing.svc.cluster.local 96m default knative-event-producer ExternalName kourier-internal.kourier-system.svc.cluster.local 80/TCP 14m default knative-event-producer-00001 ClusterIP 10.96.86.192 80/TCP 15m default knative-event-producer-00001-private ClusterIP 10.96.28.130 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP 15m default knative-hello-world ExternalName kourier-internal.kourier-system.svc.cluster.local 80/TCP 91m default knative-hello-world-00001 ClusterIP 10.96.167.179 80/TCP 93m default knative-hello-world-00001-private ClusterIP 10.96.95.149 80/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP 93m default kubernetes ClusterIP 10.96.0.1 443/TCP 105m knative-eventing broker-filter ClusterIP 10.96.173.113 80/TCP,9092/TCP 98m knative-eventing broker-ingress ClusterIP 10.96.152.238 80/TCP,9092/TCP 98m knative-eventing eventing-webhook ClusterIP 10.96.74.216 443/TCP 100m knative-eventing imc-dispatcher ClusterIP 10.96.47.167 80/TCP 99m knative-eventing inmemorychannel-webhook ClusterIP 10.96.58.59 443/TCP 99m knative-serving activator-service ClusterIP 10.96.35.118 9090/TCP,8008/TCP,80/TCP,81/TCP 103m knative-serving autoscaler ClusterIP 10.96.212.234 9090/TCP,8008/TCP,8080/TCP 103m knative-serving autoscaler-bucket-00-of-01 ClusterIP 10.96.91.48 8080/TCP 103m knative-serving controller ClusterIP 10.96.223.66 9090/TCP,8008/TCP 103m knative-serving domainmapping-webhook ClusterIP 10.96.141.167 9090/TCP,8008/TCP,443/TCP 103m knative-serving kourier-control ClusterIP 10.96.188.12 18000/TCP 101m knative-serving webhook ClusterIP 10.96.234.10 9090/TCP,8008/TCP,443/TCP 103m kourier-system kourier LoadBalancer 10.96.39.216 80:30342/TCP,443:31430/TCP 101m kourier-system kourier-ingress NodePort 10.96.243.76 80:31080/TCP 100m kourier-system kourier-internal ClusterIP 10.96.1.53 80/TCP 101m kube-system kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 105m

Logs:

❯ kubectl logs deployment.apps/knative-event-producer-00001-deployment -f -c user-container

. _ _ /\ / '_ () \ \ \ \ ( ( )\ | ' | '| | ' \/ ` | \ \ \ \ \/ _)| |)| | | | | || (| | ) ) ) ) ' |__| .|| ||| |\, | / / / / =========|_|==============|__/=//// :: Spring Boot :: (v2.2.4.RELEASE)

2021-09-10 11:27:23.606 INFO 1 --- [ main] .s.k.e.p.KnativeEventProducerApplication : Starting KnativeEventProducerApplication v0.0.1-SNAPSHOT on knative-event-producer-00001-deployment-7ff498845-wwvc6 with PID 1 (/app.jar started by root in /) 2021-09-10 11:27:23.617 INFO 1 --- [ main] .s.k.e.p.KnativeEventProducerApplication : No active profile set, falling back to default profiles: default 2021-09-10 11:27:26.871 INFO 1 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator' 2021-09-10 11:27:27.929 INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8080 2021-09-10 11:27:27.951 INFO 1 --- [ main] .s.k.e.p.KnativeEventProducerApplication : Started KnativeEventProducerApplication in 5.642 seconds (JVM running for 6.517) 2021-09-10 11:27:28.320 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : HOST: http://broker-ingress.knative-eventing.svc.cluster.local/default/example-broker 2021-09-10 11:27:28.465 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Request: POST - http://broker-ingress.knative-eventing.svc.cluster.local/default/example-broker 2021-09-10 11:27:28.468 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Id=ABC-123 2021-09-10 11:27:28.468 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Specversion=1.0 2021-09-10 11:27:28.468 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Content-Type=application/json 2021-09-10 11:27:28.468 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Type=MyCloudEvent.JustHappened 2021-09-10 11:27:28.469 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Time=2021-09-10T11:27:28.416508Z 2021-09-10 11:27:28.469 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Source=knative-event-producer.default.svc.cluster.local 2021-09-10 11:27:28.469 INFO 1 --- [or-http-epoll-3] .s.k.e.p.KnativeEventProducerApplication : Ce-Subject=null Result -> null

(So this time we are do not experience a Java exception, just the null result returned ...)

❯ kubectl logs deployment.apps/knative-hello-world-00001-deployment -f -c user-container

. _ _ /\ / '_ () \ \ \ \ ( ( )\ | ' | '| | ' \/ ` | \ \ \ \ \/ _)| |)| | | | | || (| | ) ) ) ) ' |__| .|| ||| |\, | / / / / =========|_|==============|__/=//// :: Spring Boot :: (v2.2.6.RELEASE)

2021-09-10 11:27:35.854 INFO 1 --- [ main] c.s.k.k.KnativeHelloWorldApplication : Starting KnativeHelloWorldApplication v0.0.1-SNAPSHOT on knative-hello-world-00001-deployment-775844b954-nz2jh with PID 1 (/app.jar started by root in /) 2021-09-10 11:27:35.858 INFO 1 --- [ main] c.s.k.k.KnativeHelloWorldApplication : No active profile set, falling back to default profiles: default 2021-09-10 11:27:38.982 INFO 1 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator' 2021-09-10 11:27:40.320 INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8080 2021-09-10 11:27:40.332 INFO 1 --- [ main] c.s.k.k.KnativeHelloWorldApplication : Started KnativeHelloWorldApplication in 5.749 seconds (JVM running for 6.594)

(basically here the app does not output the proper message, i.e.:

> I got a cloud event: CloudEvent{id='536808d3', source=curl, type='my-first-cloud-event', datacontenttype='application/json', dataschema=null, subject='null', time=null, data=[123, 110, 97, 109, 101, 61, 98, 109, 117, 116, 122, 105, 117, 125], extensions={}} -> cloud event attr (datacontenttype): application/json -> cloud event attr (specversion): 1.0 -> cloud event attr (id): 536808d3 -> cloud event attr (source): curl -> cloud event attr (type): my-first-cloud-event -> cloud event data: [B@28e02e6c

)

I hope you have here enough info, if something else is missing please just let me know about it.