The official Helm chart for ArcadeDB, a multi-model database supporting SQL, Cypher, Gremlin, MongoDB, and Redis protocols.
helm repo add arcadedb https://helm.arcadedb.com/
helm repo update
helm install my-arcadedb arcadedb/arcadedbSee charts/arcadedb/README.md and charts/arcadedb/values.yaml for all available options.
ArcadeDB 26.7.1+ exposes opt-in, behavior-preserving observability. All knobs default off.
Prometheus scraping (Operator):
helm install my-arcadedb arcadedb/arcadedb \
--set arcadedb.plugins.prometheus.enabled=true \
--set arcadedb.plugins.prometheus.requireAuthentication=false \
--set observability.metrics.prometheus.serviceMonitor.enabled=true \
--set observability.metrics.prometheus.serviceMonitor.labels.release=kube-prometheus-stackFor non-Operator Prometheus, use annotation discovery instead:
--set observability.metrics.prometheus.podAnnotations.enabled=true.
OTLP metrics export (alongside /prometheus) — append to the install/upgrade command:
--set observability.metrics.otlp.enabled=true \
--set observability.metrics.otlp.endpoint=http://otel-collector:4317Distributed tracing — append to the install/upgrade command:
--set observability.tracing.enabled=true \
--set observability.tracing.endpoint=http://otel-collector:4317 \
--set observability.tracing.samplingRate=0.1Structured JSON logging: --set observability.logging.format=json
The liveness probe uses the dependency-free /api/v1/health endpoint;
readiness stays on /api/v1/ready. Set
observability.health.readinessRequiresHA=true to gate readiness on Raft
membership in HA clusters.
Run checks locally:
make help # list available targets
make lint # helm lint
make test-unit # helm-unittest suites (auto-installs the plugin)
make test-integration # kind-based end-to-end tests (requires Docker)
make test # run all of the aboveUnit-test suites live in charts/arcadedb/tests/ and use helm-unittest. The plugin version is pinned in the Makefile.
.github/workflows/latest-image.yml runs the full kind HA integration suite
against the rolling arcadedata/arcadedb:latest image every Monday (and on
manual workflow_dispatch). It is a blocking pre-release guard: a red run
means the upcoming ArcadeDB release breaks the chart. It shares its steps with
the PR integration job via .github/workflows/integration-reusable.yml, so both
exercise an identical suite differing only by image tag.
When a new ArcadeDB version is released:
- Bump
versionandappVersionincharts/arcadedb/Chart.yaml. - Update the pinned image literal in
charts/arcadedb/tests/statefulset_test.yamlto the new version, orhelm-unittestwill fail (it cannot referenceChart.AppVersionin an assertion). - If
appVersionwas bumped ahead of the matching image being published (so a feature can ship as soon as the image lands), the PR integration job — which installs withimage.tag=appVersion— cannot pull the image and will time out. As a stopgap, the integration job in.github/workflows/lint.ymlcarries a temporarywith: { imageTag: latest, pullPolicy: Always }override (latesttracks the upcoming release). Once the pinned image is published, remove that override so the PR job tests the pinnedappVersionagain. - The latest-image guard needs no change — it keeps watching the next cycle's rolling image.
Pending — 26.7.1: the chart is already at
appVersion: 26.7.1(the observability feature shipped ahead of the image), and the integration job is temporarily pinned tolatestper step 3. Whenarcadedata/arcadedb:26.7.1is published, remove thewith:override in.github/workflows/lint.yml, re-run CI, and delete this note. Steps 1–2 are already done for this release.
New chart versions are published via the GitHub Actions Release workflow:
GitHub → Actions → Release → Run workflow → enter version → Run
PRs welcome. The lint workflow runs on all pull requests.