Skip to main content
This is a complete, annotated values.yaml reference for production deployments. Copy it, adapt the placeholders to your environment, and deploy.
This is a reference configuration. You must replace all placeholder values (marked with {...}) with your actual infrastructure details before deploying.

How to use


  1. Copy the full configuration below into a file called values-production.yaml
  2. Replace all {...} placeholders with your actual values
  3. Review each section and adjust resource limits for your expected workload
  4. Deploy:

Full production values


The Ledger Settings API replaces the deprecated ACCOUNT_TYPE_VALIDATION and TRANSACTION_ROUTE_VALIDATION environment variables. Use PATCH /v1/organizations/{org_id}/ledgers/{ledger_id}/settings to configure accounting validation per ledger.
The chart ignores any other key under otel-collector-lerian, such as external, extraEnvs, exporters, or opentelemetry-collector. You configure collector routing (processors, exporters, API keys) in the collector’s own chart, not here. See Configuring observability.
The chart ships no Grafana templates. A grafana: block in your values file renders nothing.

Key decisions explained


Why external databases?

Production deployments should use managed database services for:
  • Automated backups and point-in-time recovery
  • High availability with automatic failover
  • Monitoring and alerting built-in
  • Scaling without application downtime
  • Security patching managed by the provider

Why use Kubernetes Secrets instead of inline passwords?

Inline passwords in values.yaml are visible in Helm release history and may be committed to version control. Using useExistingSecret: true with pre-created Kubernetes Secrets:
  • Keeps credentials out of Helm values
  • Allows rotation without a Helm upgrade. Restart the pods to load the new values.
  • Integrates with secret management tools (Vault, External Secrets Operator, Sealed Secrets)

Pod anti-affinity

The podAntiAffinity rule prefers to place Ledger pods on different nodes, so a single node failure is less likely to stop the service.

Checklist before deploying


1

Create Kubernetes Secrets

Create all required secrets in the midaz namespace before running helm install:
  • midaz-ledger (database and message broker credentials, and the CRM encryption keys)
  • The bootstrap Secrets that the global section names
2

Configure DNS

Point your domains to the ingress controller’s external IP:
  • {your-midaz-api-domain} → ingress IP
3

Provision TLS certificates

Either use cert-manager for automatic certificate provisioning or manually create TLS secrets for each domain.
4

Verify database connectivity

Ensure your Kubernetes cluster can reach all external databases. Test with:
5

Review resource limits

Adjust CPU and memory limits based on your expected transaction volume. Use the values in this reference as starting points.
6

Deploy

7

Verify deployment