gRPC load balancer for azure cloud

Zeebe application seems to be having issues with networking on azure platform, since there is no clear support for load balancer that could handle external connections to the cluster. And it creates a limit of workers having to be deployed inside of the same Kubernetes node.

Are there any reasonable solutions to this problem?

Or should we avoid azure as our cloud provider if we want to have workers externally ?

Thanks in advance, Haroldas

Hi @Haroldas, welcome to the Zeebe community!

I don’t think there is a Zeebe ingress controller for any K8s environment at the moment. You have to roll your own, or - as you say - deploy your workers to the same K8s cluster.

Josh

@Haroldas hi there… can you help me to understand a little bit more your problem?

  • Are you using the Helm Charts?
  • Are you connecting workers from outside the cluster?
  • You can always create a worker inside the cluster to connect with your actual services outside the cluster to avoid exposing gRPC outside the cluster. gRPC is tricky, but I am sure that the Azure Ingress Controller might help you with that, have you tried that? https://azure.microsoft.com/en-us/blog/application-gateway-ingress-controller-for-azure-kubernetes-service/ you can check how faraway are they to support gRPC or even upvote an issue in their GitHub repo.

Thanks for quick responses @salaboy and @jwulf

Yes, I am using helm charts.

Well my problem is that I would like to make a setup where I could communicate with my Zeebe cluster from outside of the K8 cluster. And as I have gathered port forwarding is not a valid solution if you are planning to move to production at any point.

And since Azure ingress controller does not have a support for gRPC it seems like a dead-end.

@Haroldas you can always build a bridge between you services outside the and a worker inside the cluster. That should give you some options there, right?
Load balancing long lived connections is in general a hard problem… this article talks about this: https://learnk8s.io/kubernetes-long-lived-connections

What about these?

We are using Nginx as the ingress controller on GCE for Camunda Cloud.

Thank you guys!

I have managed to establish gRPC connection with nginx controller.

1 Like

Hi all, it’s an old conversation, but i can’t find a solution.
I got an issue with the azure load balancer.
In my k8s cluster i expose a gRPC endpoint on the nginx ingress, through the port 443.
In front of the ingress threre is a LB, that simply forward the requests on the backend pool.

In on premis solution the lb is nginx, on cloud is an Azure Load Balancer.
On premis works fine, on cloud i got the following error (with BloomRPC) :

Any idea ?