Apex Designer Documentation
What's New
Getting Started
Projects
Business Objects
Processes
User Interfaces
App Behaviors
Files
Dependencies
Project Settings
Libraries
Patterns and Best Practices
App Showcase

Camunda 8 Kind Install

Blank Profile Image
Written by David Knapp
Updated 4 months ago
5 min read

The best way to run Camunda 8 on your local machine is using Kind. This page walks through the steps to set up a Kubernetes cluster on your local machine. If you have questions about any of the steps or get stuck, don't hesitate to click the Ask a Question button at the bottom right and we can set up a Zoom to help you through the problem.

Install Docker Desktop

To run Docker on your local machine, install Docker Desktop following the instructions here.

Install Brew

Brew makes it easiest to install things on macOS. If you are running Windows, you can try Chocolatey. Run this command to install brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Install kubectl

The command line tool for Kubernetes is kubectl. Run the following command to install it on macOS (instructions for other operating systems are here):

brew install kubectl

Install helm

Helm is the package manager for Kubernetes. Run the following command to install it on macOS (instructions for other operating systems are here):

brew install helm

Install kind

Kind is a tool for running local Kubernetes clusters. Run the following command to install it on macOS (instructions for other operating systems are here):

brew install kind

Create a Kind Cluster

By default, a kind cluster only exposes a single port. To make it easy to access apps running in your cluster, you can expose additional ports on the kind cluster with a configuration file by running this command:

curl -fsSL https://raw.githubusercontent.com/apexdesigner/apex-cluster-manager/main/kind/Cluster.yaml | kind create cluster --config -

Install Camunda

Add the Camunda Helm charts repository:

helm repo add camunda https://helm.camunda.io

The Camunda Helm Repository has a values file that configures Camunda 8 to run nicely on kind cluster. That configuration includes Task List and Operate. These enterprise components are not needed with Apex Designer apps because the Camunda 8 Library includes task management and process administration capabilities. To save resources, install Camunda with an additional configuration file:

helm install camunda camunda/camunda-platform \
  -f https://raw.githubusercontent.com/camunda/camunda-platform-helm/main/kind/camunda-platform-core-kind-values.yaml \
  -f https://raw.githubusercontent.com/apexdesigner/apex-cluster-manager/main/kind/examples/camunda.values.yaml

Install Postgres

Add the Bitnami Helm charts repository:

helm repo add bitnami https://charts.bitnami.com/bitnami

To expose Postgres and make it accessible on your machine, install it with a configuration file that exposes it on port 30000:

helm install postgres bitnami/postgresql \
-f https://raw.githubusercontent.com/apexdesigner/apex-cluster-manager/main/kind/examples/postgres.values.yaml

It will take a while before all the pods are running. You can use this command to get the list of pods and their statuses and watch for updates:

kubectl get pods -w

It should looks something like this:

NAME                                     READY   STATUS    RESTARTS   AGE
camunda-zeebe-0                          1/1     Running   0          152m
camunda-zeebe-gateway-7c89dff757-qv8jl   1/1     Running   0          152m
elasticsearch-master-0                   1/1     Running   0          152m
postgres-postgresql-0                    1/1     Running   0          140m

A password was automatically generated when Postgres was installed. To get that password, run this command:

kubectl get secret --namespace default postgres-postgresql -o jsonpath="{.data.postgres-password}" | base64 -d

You can now access postgres at localhost:30000 with user postgres and the password returned in the previous step.

Installing an App Manager

In Apex Designer, go to Settings + App Managers and create a local app manager for your app by selecting this option:

Set the port number for your app manager to 30001 (or anything up to 30009 - these are the port numbers that are configured in Auth0 for the apexdesigner.app domain):

Create a manifest file for your app manager. This is my example named dmk-c8-app.yaml. All of the bold text will need to be updated. You can find the values on the app manager page for your app. The zeebeDeploymentPrefix environment variable separates the process definitions and jobs of this app from other apps you deploy to the same Zeebe instance. The exact value does not matter. Just make sure it is unique within the Zeebe instance.

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/component: app-manager
    app.kubernetes.io/instance: dmk-c8-app
    app.kubernetes.io/managed-by: apex-designer
    app.kubernetes.io/name: app-manager
    app.kubernetes.io/version: 2.0.22
    environment: production
  name: dmk-c8-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/instance: dmk-c8-app
      app.kubernetes.io/name: app-manager
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app.kubernetes.io/component: app-manager
        app.kubernetes.io/instance: dmk-c8-app
        app.kubernetes.io/managed-by: apex-designer
        app.kubernetes.io/name: app-manager
        app.kubernetes.io/version: 2.0.22
        environment: production
      name: dmk-c8-app
    spec:
      containers:
        - env:
            - name: projectId
              value: "6528"
            - name: apexDesignerURL
              value: https://app.apexdesigner.io
            - name: clientSideApexDesignerURL
              value: https://app.apexdesigner.io
- name: skipSSLRedirect value: "true" - name: adminEmails value: david.knapp@apexbpm.com - name: apexDesignerAuth0Audience value: https://apexdesigner.io - name: apexDesignerAuth0Issuer value: https://login.apexdesigner.io/ - name: syncApiKey value: sfgaasdfs - name: appUrl value: https://localhost:30001 - name: databaseUrl value: postgres://postgres:PAJ7dnZWi0@postgres-postgresql:5432/dmk-c8-app - name: databaseSSL value: 'false' - name: elasticsearchConfiguration value: '{ "node": "http://elasticsearch-master-headless:9200" }' - name: ZEEBE_ADDRESS value: 'http://camunda-zeebe-gateway:26500' - name: zeebeDeploymentPrefix value: DCA image: apexbpm/app-manager:2.0.22 imagePullPolicy: IfNotPresent name: dmk-c8-app ports: - containerPort: 3000 protocol: TCP volumeMounts: - mountPath: /usr/src/app/app name: persistent-storage volumes: - name: persistent-storage persistentVolumeClaim: claimName: dmk-c8-app --- apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/component: app-manager app.kubernetes.io/instance: dmk-c8-app app.kubernetes.io/managed-by: apex-designer app.kubernetes.io/name: app-manager app.kubernetes.io/version: 2.0.22 environment: production name: dmk-c8-app spec: type: NodePort ports: - port: 80 targetPort: 3000 nodePort: 30001 selector: app.kubernetes.io/instance: dmk-c8-app --- apiVersion: v1 kind: PersistentVolumeClaim metadata: labels: app.kubernetes.io/component: app-manager app.kubernetes.io/instance: dmk-c8-app app.kubernetes.io/managed-by: apex-designer app.kubernetes.io/name: app-manager app.kubernetes.io/version: 2.0.22 environment: production name: dmk-c8-app spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "standard" resources: requests: storage: 15Gi

Install your app manager using this command:

kubectl apply -f dmk-c8-app.yaml

The first install will take at least several minutes because it needs to download the App Manager image. Subsequent installations of Using this command to wait for the pods to all be running:

kubectl get pods -w

You should now be able to launch your app manager using http://localhost:30001/apexDesigner/status.

Powered by Apex Designer
Terms of ServicePrivacy Policy
© 2017-2022 Apex Process Consultants