Best Container strategy to deploy camunda to Kubernetes(EKS)

Hi All,

what is the best way to deploy camunda to Kubernetes?

Current architecture

  1. Community version of tomcat distribution

  2. Custom plugins for authn/authz, event handling etc deployed as jars

  3. Custom job executor and thread settings

  4. Deployed to AWS Ec2 linux machine

  5. To pull camunda community docker image and customize deployment of our plugins. If so how do we achieve 1, 2 and 3 in our current architecture- Run Camunda Platform using Docker | docs.camunda.org

  6. Create a springboot project and containarize the springboot with all customization we have and deploy that to Kubernetes.
    are there any limitations with springboot version of camunda to be kept in mind from performance and execution perspective?

Hi @harish_malavade ,

I’ve been successfully running spring-boot based embedded version (basically option 2 you describe).
It was 4 separate engines and each one of them had between 2 and 4 replicas. It was supporting insurance self-service processes, so the load and performance requirements were not that high.

We were keeping the version as fresh as possible (https://github.com/camunda/camunda-docs-manual/blob/master/content/user-guide/spring-boot-integration/version-compatibility.md) and used liquibase to automate DB migrations.

I believe spring-boot based stack is recommended as long as you have Java developers (Camunda Best Practices - Using a Greenfield Stack).

It is hard to say which way is “the best” in your case, but I suppose option no. 2 gives you quite a lot of flexibility.

2 Likes

Hi @harish_malavade

I think @AdamLiberadzki point is really well made, especially about trying to decimeter what option is best. Depending on if you go with a Camunda Spring Boot distro or use the Camunda Run distro your architecture will be very different.

I suggest you spend some time working out which one is best for you as a starting point, because as @AdamLiberadzki quite rightly says - Spring Boot is great, but if you’re not using Java it might not be the right choice.

You can read more about it here:

1 Like

Thank you @AdamLiberadzki @Niall for Great insights and thoughts.
We are using Java to build our reusable delegates and plugins. However in our organization, we are offering BPM platform as SAAS to our internal customers with camunda being core engine(multiple camunda clusters per business unit with logical tenancy for apps within business unit) with custom UI and Process/task management wrapper around camunda. In this architecture we also have a external repository service to store BPMN and DMNs and we dont embed BPMN/DMN models into core engine while deploying camunda. That is where I was thinking whether to use springboot with our plugins/reusable delegate and dockerize or to use distributed camunda docker image and overwrite it with our settings.