> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Midaz components reference

> Configure the Ledger, CRM, and Tracer workloads in the Midaz Helm chart.

<Warning>
  CRM and Fees guidance marked legacy on this page applies only to an existing legacy release. Midaz v4 deploys the unified Ledger and serves CRM and Fees on `/v2`.
</Warning>

The Midaz chart has Ledger, CRM, and Tracer workloads. The chart enables Ledger by default. It disables CRM and Tracer by default. CRM is a module inside the `midaz-helm` chart. You enable it with the `crm` values block. No CRM chart exists.

The image tag of each workload defaults to the application version that the chart deploys. Read the current defaults with `helm show values oci://registry-1.docker.io/lerianstudio/midaz-helm`.

## Ledger

***

Ledger combines the onboarding and transaction modules in one deployment.

| Parameter                        | Default                     |
| :------------------------------- | :-------------------------- |
| `ledger.enabled`                 | `true`                      |
| `ledger.name`                    | `ledger`                    |
| `ledger.replicaCount`            | `2`                         |
| `ledger.image.repository`        | `lerianstudio/midaz-ledger` |
| `ledger.service.type`            | `ClusterIP`                 |
| `ledger.service.port`            | `3002`                      |
| `ledger.ingress.enabled`         | `false`                     |
| `ledger.autoscaling.enabled`     | `true`                      |
| `ledger.autoscaling.minReplicas` | `2`                         |
| `ledger.autoscaling.maxReplicas` | `9`                         |
| `ledger.useExistingSecret`       | `false`                     |

The Ledger liveness probe defaults to `/health`. Its readiness probe defaults to `/readyz`. Both probe blocks accept overrides under `ledger.livenessProbe` and `ledger.readinessProbe`.

### Existing Secret

Use an existing Kubernetes Secret instead of a chart-managed Ledger Secret:

```yaml theme={null}
ledger:
  useExistingSecret: true
  existingSecretName: midaz-ledger
```

The Secret must contain the credentials required by the services you configure. See [Configuration reference](/en/platform/deploy/midaz/midaz-configuration-reference).

## CRM

***

The chart deploys CRM as an optional workload beside Ledger.

| Parameter                     | Default                  |
| :---------------------------- | :----------------------- |
| `crm.enabled`                 | `false`                  |
| `crm.name`                    | `crm`                    |
| `crm.replicaCount`            | `1`                      |
| `crm.image.repository`        | `lerianstudio/midaz-crm` |
| `crm.service.type`            | `ClusterIP`              |
| `crm.service.port`            | `4003`                   |
| `crm.ingress.enabled`         | `false`                  |
| `crm.autoscaling.enabled`     | `true`                   |
| `crm.autoscaling.minReplicas` | `1`                      |
| `crm.autoscaling.maxReplicas` | `3`                      |
| `crm.useExistingSecret`       | `false`                  |

Enable CRM in your override file:

```yaml theme={null}
crm:
  enabled: true
  useExistingSecret: true
  existingSecretName: midaz-crm
```

Create `midaz-crm` before deploying and include `LCRYPTO_HASH_SECRET_KEY` and `LCRYPTO_ENCRYPT_SECRET_KEY`. CRM uses `/health` for liveness and `/readyz` for readiness by default. Configure its ingress, resources, autoscaling, and secret settings under the `crm` key.

## Tracer

***

Tracer is an optional transaction-validation workload in the Midaz chart.

| Parameter                        | Default                     |
| :------------------------------- | :-------------------------- |
| `tracer.enabled`                 | `false`                     |
| `tracer.name`                    | `tracer`                    |
| `tracer.replicaCount`            | `1`                         |
| `tracer.image.repository`        | `lerianstudio/midaz-tracer` |
| `tracer.service.type`            | `ClusterIP`                 |
| `tracer.service.port`            | `4020`                      |
| `tracer.ingress.enabled`         | `false`                     |
| `tracer.autoscaling.enabled`     | `true`                      |
| `tracer.autoscaling.minReplicas` | `1`                         |
| `tracer.autoscaling.maxReplicas` | `5`                         |
| `tracer.migrations.enabled`      | `true`                      |
| `tracer.useExistingSecret`       | `false`                     |

Enable the workload and point Ledger to it when you want transaction validation in the same release:

```yaml theme={null}
tracer:
  enabled: true

ledger:
  configmap:
    TRACER_BASE_URL: http://midaz-tracer:4020
    TRACER_TRANSPORT: rest
```

Tracer uses `/health` for liveness and `/readyz` for readiness by default. Tracer exposes its gRPC service port only when you set `tracer.configmap.TRACER_GRPC_PORT`. Configure both sides before changing `TRACER_TRANSPORT` to `grpc`.

<Note>
  Read the complete chart interface from the version you deploy:
  `helm show values oci://registry-1.docker.io/lerianstudio/midaz-helm --version <version>`. It carries fields not listed here.
</Note>
