I deployed Camunda 8.8 self-managed via Helm Chart on a K3s cluster on my server. I tried both the full cluster and orchestration-only versions. In both cases, I can authenticate with the Python worker I created, but I don’t receive any jobs.
I’m currently testing the orchestration-only version. I created a very simple BPMN model just to test communication with the worker.
The Python worker runs within a K3s cluster pod in the same namespace.
The pods are running, and there are no errors in the logs.
kube-system coredns-64fd4b4794-hflwn 1/1 Running 0 3d21h
kube-system helm-install-traefik-crd-fzp56 0/1 Completed 0 3d21h
kube-system helm-install-traefik-gnq9n 0/1 Completed 1 3d21h
kube-system local-path-provisioner-774c6665dc-x7hfv 1/1 Running 0 3d21h
kube-system metrics-server-7bfffcd44-vgltj 1/1 Running 0 3d21h
kube-system svclb-traefik-3a4b9cd8-lpjtq 2/2 Running 0 3d21h
kube-system traefik-c98fdf6fb-6cjmm 1/1 Running 0 3d21h
orchestration camunda-elasticsearch-master-0 1/1 Running 0 3d21h
orchestration camunda-zeebe-0 1/1 Running 0 21h
orchestration python-worker-6b68955f7b-swpf6 1/1 Running 0 21h
ZEEBE_ADDRESS = os.environ.get("ZEEBE_ADDRESS", "camunda-zeebe-gateway:26500")
interceptor = AsyncBasicAuthInterceptor(USERNAME, PASSWORD)
channel = grpc.aio.insecure_channel(
ZEEBE_ADDRESS,
interceptors=[interceptor]
)
client = ZeebeClient(channel)
try:
status = await client.topology()
print(f"Connected! Topology: {status}")
except Exception as e:
print(f"Error: {e}")
await channel.close()
return
worker = ZeebeWorker(channel, name="python-worker-sum")
@worker.task(task_type="test")
async def test_job():
print("Job 'test' received!")
return {"result": "OK from worker"}
@worker.task(task_type="sum-numbers")
async def sum_numbers(**kwargs):
print(f"JOB Received! Data: {kwargs}")
a = kwargs.get("a")
b = kwargs.get("b")
if a is None or b is None:
print(f"Missing: a={a}, b={b}")
return {"error": "missing variables"}
result = int(a) + int(b)
print(f"🔢 Result: {result}")
return {"result": result}
print(f"Worker listening on {ZEEBE_ADDRESS}...")
try:
await worker.work()
finally:
await channel.close()
The worker is able to authenticate and retrieve the topology but does not receive any tasks.
The worker logs are:
Connected! Topology: TopologyResponse(brokers=[TopologyResponse.BrokerInfo(node_id=0, host='camunda-zeebe-0.camunda-zeebe', port=26501, partitions=[TopologyResponse.BrokerInfo.Partition(partition_id=1, role=<PartitionBrokerRole.LEADER: 0>, health=<PartitionBrokerHealth.HEALTHY: 0>)], version='8.8.11')], cluster_size=1, partitions_count=1, replication_factor=1, gateway_version='8.8.11')
Worker listening on camunda-zeebe-gateway:26500...
The task_type name matches the serviceTask ID.
I tried the same worker code and the same model in a docker-based Camunda 8 Self-Managed deployment and the worker receives the jobs correctly.