Skip to main content
This page is intended for DevOps engineers and infrastructure teams. It covers Kubernetes deployment configuration using Helm charts. If you’re looking for a high-level understanding of Midaz’s deployment options, see SaaS and BYOC.
This is the recommended way to deploy Midaz on Kubernetes. The Helm chart installs everything you need in a single command: the core Ledger service (or legacy Onboarding/Transaction), PostgreSQL, MongoDB, Valkey, RabbitMQ, and an optional observability stack (Grafana + OpenTelemetry).
Use the Ledger service for all new installations. The separate Onboarding and Transaction services are supported for migration scenarios only and will be deprecated in a future release.
This guide covers Midaz Helm chart v5.x. For upgrading from previous versions, see Upgrading Helm.

What gets deployed


A default helm install deploys the following components:
  • Ledger — Unified API service (port 3002) handling onboarding, transactions, and account management.
  • PostgreSQL — Primary + replica for relational data storage (port 5432).
  • MongoDB — Document store for audit logs and metadata (port 27017).
  • Valkey — In-memory cache for session and balance data (port 6379).
  • RabbitMQ — Message broker for async event processing (ports 5672/15672).
  • Grafana + OTEL LGTM — Observability stack with dashboards, logs, traces, and metrics (port 3000, if enabled).

Prerequisites


Before deploying Midaz with Helm, make sure you have:
  • Kubernetes (v1.30+) – Running cluster.
  • Helm 3+ – Installed and available (helm version).
  • Access to a container registry with Midaz images.
  • DNS and TLS certificates for ingress (or cert-manager installed).
The source code for this Helm chart is available at:The default installation matches the one provided in the Midaz quick installation guide.
Want a deeper understanding of the architecture? Check the Midaz architecture overview.

Install Midaz via Helm Chart


To install Midaz using Helm, run the following command:
helm install midaz oci://registry-1.docker.io/lerianstudio/midaz-helm --version <version> -n midaz --create-namespace
Replace <version> with the desired Helm chart version. You can check available versions by running:
helm search repo oci://registry-1.docker.io/lerianstudio/midaz-helm --versions
This creates a namespace called midaz (if it doesn’t already exist) and deploys the chart.
The Helm chart is in our GitHub repository. You can fork it, customize values, or extend as needed.

Verify the installation


After running the install command, verify that all pods are running:
kubectl get pods -n midaz
kubectl get svc -n midaz
Expected result: You should see 5-7 pods in Running state (Ledger, PostgreSQL primary, PostgreSQL replica, MongoDB, Valkey, RabbitMQ, and optionally Grafana). All services should have ClusterIP endpoints assigned. If any pod is in CrashLoopBackOff or Pending, check the pod logs with kubectl logs <pod-name> -n midaz.
To confirm the Helm release is tracked:
helm list -n midaz

Next steps