Hi,
I cannot reach the grpc service endpoint in my Camunda 8.8 instance, it is throwing 500 internal erros, these are the logs generated in the Kubernetes pod:
[2026-02-06 13:43:49.301] [grpc-default-worker-ELG-5-2] DEBUG
io.grpc.netty.NettyServerHandler - [id: 0xb7c9d7e9, L:/10.244.1.157:26500 - R:/10.244.3.158:34078] OUTBOUND WINDOW_UPDATE: streamId=0 windowSizeIncrement=983041
[2026-02-06 13:43:49.302] [grpc-default-worker-ELG-5-2] DEBUG
io.grpc.netty.NettyServerHandler - Connection Error
io.netty.handler.codec.http2.Http2Exception: Unexpected HTTP/1.x request: POST /gateway_protocol.Gateway/CreateProcessInstance
at io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:107)
at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.readClientPrefaceString(Http2ConnectionHandler.java:315)
at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(Http2ConnectionHandler.java:245)
at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:451)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:545)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:484)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:805)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:501)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:399)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998)
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)
[2026-02-06 13:43:49.302] [grpc-default-worker-ELG-5-2] DEBUG
io.grpc.netty.NettyServerHandler - [id: 0xb7c9d7e9, L:/10.244.1.157:26500 - R:/10.244.3.158:34078] OUTBOUND GO_AWAY: lastStreamId=2147483647 errorCode=1 length=82 bytes=556e657
My grpc ingress config is this, I also have a global ingress definition for REST endpoint, which is working fine:
orchestration:
enabled: true
contextPath: "/"
fullURL: "https://${namespace_name}.${service_uri}${stage_uri}${domain}/"
camunda:
persistent:
sessions:
enabled: true
rest:
query:
enabled: true
ingress:
grpc:
enabled: true
className: ${ingress_controller}
annotations:
cert-manager.io/cluster-issuer: ${clusterissuer_name}
traefik.ingress.kubernetes.io/router.entrypoints: "websecure"
traefik.ingress.kubernetes.io/router.tls: "true"
acme.cert-manager.io/http01-edit-in-place: "false"
acme.cert-manager.io/http01-ingress-class-name: ${ingress_controller}
cert-manager.io/common-name: "grpc.${namespace_name}.${service_uri}${stage_uri}${domain}"
cert-manager.io/duration: "720h"
cert-manager.io/renew-before: "24h"
cert-manager.io/subject-organizations: ${subject_organizations}
cert-manager.io/subject-organizationalunits: ${subject_organizationalunits}
cert-manager.io/subject-localities: ${subject_localities}
cert-manager.io/subject-provinces: ${subject_provinces}
cert-manager.io/subject-countries: ${subject_countries}
cert-manager.io/private-key-size: "4096"
host: "grpc.${namespace_name}.${service_uri}${stage_uri}${domain}"
tls:
enabled: true
secretName: "${namespace_name}-${stage}-grpc-tls"
Kind Regards,
Julian