Camunda Self-Managed for Absolute Beginners

4 Likes

Thanks for providing the tutorial for installing Camunda 8. No problem for installation. At present, I use such as the following command to access the Camunda 8 Web App.

kubectl port-forward svc/camunda-platform-operate 8081:80
http://localhost:8081

However, I’d like to access the Web App through nginx Ingress Controller. I’ve already install it in my K8s. Could you explain the more details on how to update camunda-values.yaml to do the following?

As part of the Helm charts, an ingress definition can be deployed, but you require to have an Ingress Controller for that Ingress to be Exposed.
In order to deploy the ingress manifest, set <service>.ingress.enabled to true. Example: operate.ingress.enabled=true

Hi @T-san - great question! First you need to decide whether you want to use a combined or separated ingress setup. A combined setup would allow you to access everything on a single domain using paths (e.g. http://localhost/operate, http://localhost/identity, etc.), or separated on their own domain/host (e.g., http://operate.domain.com, http://identity.domain.com, etc.)

We have a guide for setting up both options, I would recommend starting here: Combined and separated Ingress setup | Camunda 8 Docs

If you want to see a more complex configuration, you can look through this repository. The configuration linked is for a local kind install, very similar to the blog post. The key differences in the Helm configuration is that it uses TLS/SSL, and it uses a more enterprise configuration (more resources, includes Web Modeler if you have a license, etc.) … but, it does use the combined ingress setup, so is a nice reference.

Let me know if you have any questions or run into any issues!

Hi, thanks. I would use the combined setup. When looking at the yaml file, it does not contains the information, for example,

zeebe:
  clusterSize: 1
  partitionCount: 1
  replicationFactor: 1
  pvcSize: 10Gi
  resources: {}
  initResources: {}

I’m afraid that just applying the yaml shown there does not install Camunda 8 with the ingress controller correctly. I thought to make the ingress controller work, your provided yaml needs to be updated to have the ingress definition. Am I wrong? If you provide me the approach to prepare yaml, it would be very helpful.

Hi @T-san - I don’t have time this week to make a demo with an ingress controller, but I think that’s a great idea and something I’ll try to work on in the future.

You are right that the yaml from the blog article is different than the two resources I linked, and that’s to be expected. Camunda is highly customizable to fit you needs and environment, which makes having a “standard” set of values very hard. It’s a matter of adding the values needed, which the guide in our documentation lists out.

But, you are right, it’s not enough to just add those values to your yaml configuration. You also need to deploy an ingress controller, which is not included in our Helm charts. You need a values file for the ingress controller, then deploy the controller to your cluster with Helm. When setting it up on my local workstation, I follow these steps in the documentation almost line for line. Give those a try and let me know what issues/questions you have! (Note: we don’t include the ingress controller because we’ve found that it’s often more of a complication than not. Cloud providers often have their own ingress controllers already available, so instead of packaging one that only works in certain situations, we recommend installing your own instead.)

@nathan.loding Thanks. Ingress Controller is already installed on my K8s. My difficulty is to create a proper yaml to install Camunda 8 with Ingress Controller using Helm. I will further study and try. When you have time, very much appreciate your work for writing another post re generic solution for Ingress Controller.

Hi @nathan.loding - thank for the article.

I’m getting the following error message when I try to start the services via Helm:

PS C:\Users\dujua.kube> helm install camunda-platform camunda/camunda-platform -f camunda-values.yaml
Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: error validating “”: error validating data: [ValidationError(Deployment.spec.template.spec.containers[0]): unknown field “limits” in io.k8s.api.core.v1.Container, ValidationError(Deployment.spec.template.spec.containers[0]): unknown field “requests” in io.k8s.api.core.v1.Container]

Here’s k9s screenshot for context:

Hi @djhair01 - I’ll be honest, I’ve not encountered that error before. I just ran through the blog step by step without any changes and, of course, it works on my machine …

Did you install all the software packages just for this, or were some already installed on your workstation? If some were already installed, I would check to see if there are any updates, apply those, then try again.

If that doesn’t work or everything was already up to date, I would next try the Helm debug command. Add --dry-run --debug to the end of the helm install command. It will output a very long log, so it would be best to redirect the output to a file by adding > debug.txt to the end also.

helm install camunda-platform camunda/camunda-platform -f camunda-values.yaml --dry-run --debug > debug.txt

That should create a debug.txt file in whatever directory you executed the command - attach it to your next reply and we can dig deeper! (Note: I don’t have a Windows workstation available at the moment, so you may need to tweak that command slightly to make it work on Windows. I’m pretty sure > will still redirect stdout in Windows but I’m not 100% certain.)

Thanks @nathan.loding for the prompt response. Did upgrades, reinstalled Camunda, did port forward, but services are not visible. :frowning:

Upgraded as follows:

kind version 0.20.0
kubectl versions
Client Version: v1.28.2
Server Version: v1.27.3
helm version
version.BuildInfo{Version:“v3.13.0”,
GitCommit:“825e86f6a7a38cef1112bfa606e4127a706749b1”,
GitTreeState:“clean”, GoVersion:“go1.20.8”}

I’ve attached debug.txt file (changed extension to .yaml to enable upload)
debug.yaml (92.2 KB)
.

Here are k9s, docker desktop, Camunda install screenshots:

Hi @djhair01 - nothing stood out to me in the debug log. I know that you are using the values file from the blog post, but can you share that file also?

Sure. Here it is…
camunda-values.yaml (1.1 KB)

Thanks @djhair01. I am going to do some more investigating!

1 Like

Hi @djhair01 - good news and not as good news! I worked with the engineers and we identified what was happening, and there is already a pending fix for it (see here). The issue is that some indenting is incorrect with the last release of the Helm charts. Strangely, Helm on macOS seems to handle the issue completely differently than Helm on Windows! On macOS I get warnings but the install proceeds and the pods start up; on Windows, I get the same fatal error you get. A quirk of Helm between platforms made this a bit harder to diagnose!

The not as good news is that I don’t have an ETA for when the fix will be released. However, because the fix has been merged into the main branch of the repository, there is a workaround that involves cloning the Camunda Helm repository and referencing the local copy when doing helm install:

helm install camunda-platform camunda/camunda-platform -f camunda-values.yaml ../path/to/camunda-platform-helm/charts/camunda-platform

For instance, I have the following directory structure:

- Camunda
  |- sm-configs
  |- camunda-platform-helm

I cloned the Helm charts into the parent directory of where I store my configs, so for my directory configuration, the command would be:

helm install camunda-platform camunda/camunda-platform -f camunda-values.yaml ../camunda-platform-helm/charts/camunda-platform

Adjust the path as needed for your local environment, and it should work!

Hi @nathan.loding - thanks for the follow-up.

I tried the workaround but alas, it’s not working for me (quite likely user error).

Here’s the setup:

  1. I copied the Camunda Helm repository to the directory where my camunda-values.yaml resides

  2. I tried to adjust the helm install command accordingly, and run it. The first attempt,
    “helm install camunda-platform camunda/camunda-platform -f camunda-values.yaml camunda-platform-helm/charts/camunda-platform”
    had a syntax error

  3. In the second attempt,
    “helm install camunda-platform camunda/camunda-platform -f camunda-values.yaml
    …/camunda-platform-helm/charts/camunda-platform”
    the reference to the cloned Helm repo was ignored. I’ve attached the complete transcript (renamed .txt to .yaml).
    Camunda 8.3 Logs.yaml (22.0 KB)

I suspect that i’m making an “Absolute Beginner” syntax error…Please advise. Thanks.

Hi @djhair01 - apologies, I gave you the wrong command! My fault! :upside_down_face:

helm install camunda-platform -f camunda-values.yaml ../path/to/camunda-platform-helm/charts/camunda-platform

… that command should work. The difference is that it is missing the camunda/camunda-platform argument. That argument is the Helm repository that it should pull the Charts from, and instead we need to use your local copy. The command I gave originally told Helm to install using two different repositories and it wasn’t happy about that! (You may also need to run make helm.dependency-update inside the cloned repository. This command executes helm dependency update for each of the Charts.)

Hey @nathan.loding - sorry but i’m not quite following…

Should my command look like this:

helm install camunda-platform camunda/camunda-platform -f camunda-values.yaml camunda-platform-helm/charts/camunda-platform

I tried that and got the following:

Thanks.

No - unfortunately, you still have to command incorrect, which is why helm is complaining.

try

helm install camunda-platform -f camunda-values.yaml camunda-platform-helm-main/charts/camunda-platform

where:

helm = command to be run
install = function to be done by the command
camunda-platform = name of the item you’re going to install in to the cluster
-f camunda-values.yaml = instruction to helm to use the configuration values from the file
camunda-platform-helm-main/charts/camunda-platform = where to get the install process from

@GotnOGuts - thanks for correcting my bad command…Made progress.

@nathan.loding - next roadbump was helm dependency build. I’m getting an access error retrieving Elasticsearch components.

I’ve included transcript for reference…
Camunda 8.3 - Logs - 202311042130.yaml (6.1 KB)

@djhair01 - try running make helm.dependency-update from the the C:\Users\dujua\.kube\camunda-platform-helm-main directory instead.

Hi @nathan.loding - i think i had to run the “helm dependency update” command from the C:\Users\dujua.kube\camunda-platform-helm-main\charts\camunda-platform subdirectory so that the command had access to the Chart.yaml file: