Plain manifests for running the EventMesh runtime (StatefulSet) and the connector-runtime (Deployment) on Kubernetes, wrapped with kustomize. Helm packaging is a planned follow-up; the operator path from the legacy master branch (eventmesh-operator/, issue #3327) is not ported to the new architecture yet.
# 1. Point conf at your real broker (edit runtime-configmap.yaml): # eventMesh.server.kafka.namesrvAddr / eventMesh.server.rocketmq.namesrvAddr # 2. Set a real admin token (runtime-secret.yaml) -- the admin API is # FAIL-CLOSED without -Deventmesh.admin.token. # 3. Apply: kubectl apply -k .
The runtime Service exposes eventmesh-runtime.eventmesh-system:10105 (traffic) and :10106 (admin). Verify:
kubectl -n eventmesh-system get pods TOKEN=$(kubectl -n eventmesh-system get secret eventmesh-admin-token -o jsonpath='{.data.token}' | base64 -d) kubectl -n eventmesh-system run curl --rm -it --image=curlimages/curl -- curl -s -H "Authorization: Bearer $TOKEN" http://eventmesh-runtime.eventmesh-system.svc.cluster.local:10106/admin/health
| File | Purpose |
|---|---|
namespace.yaml | eventmesh-system namespace |
runtime-configmap.yaml | eventmesh.properties (storage endpoints) — subPath-mounted into conf/ |
runtime-secret.yaml | Admin bearer token (example; replace before use) |
runtime-statefulset.yaml | Runtime pods: ports, probes on /admin/health, non-root (uid 10001), PVC for the RocksDB offset store |
runtime-service.yaml | Stable DNS for traffic (10105) + admin (10106) |
connector-configmap.yaml | Connector topology as CONNECTOR_OPTS (edit + rollout restart) |
connector-deployment.yaml | Connector-runtime pods (non-root uid 10002, process liveness probe) |
Default -Deventmesh.delivery.topology=LOCAL_STICKY_PULL: every instance polls every partition of every subscribed topic. Works per-instance with no coordination, but instances duplicate consumption.
PARTITION_OWNED_PULL (no duplicate consumption, fencing via a meta store): requires shared coordination. Add to JAVA_OPTS in the StatefulSet:
value: "-Deventmesh.admin.token=$(EVENTMESH_ADMIN_TOKEN) -XX:MaxRAMPercentage=70 -Deventmesh.meta.type=nacos -Deventmesh.meta.addr=<nacos-host>:8848 -Deventmesh.offset.meta=true"
and scale replicas. See deployment docs for the coordination keys.
The image ships the memory (default, zero-dependency) / kafka / rocketmq / rocketmq5 storage plugins. Switch with EVENTMESH_STORAGE_TYPE on the runtime container and point eventMesh.server.<backend>.namesrvAddr in the ConfigMap at the in-cluster service (e.g. Strimzi Kafka bootstrap or a RocketMQ name server Service).