> ## 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.

# Referencia de componentes de Midaz

> Configura los componentes del chart de Helm de Midaz — Ledger y CRM — con ajustes de deployment, servicio e ingress.

El chart de Helm de Midaz despliega dos componentes de servicio: **Ledger** (el servicio core unificado, habilitado por defecto) y **CRM** (opcional). Cada componente tiene su propio deployment, servicio, ingress y configuración de autoescalado.

<Tip>
  **Decisión rápida:** ¿Necesitas CRM? → configura `crm.enabled: true`.
</Tip>

### Ledger

El servicio `ledger` combina los módulos onboarding y transaction en un solo despliegue. Es el único servicio core y está habilitado por defecto.

| Parámetro                                              | Descripción                                                                                                                                                                                                            | Valor predeterminado                                                         |
| :----------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------- |
| `ledger.enabled`                                       | Habilitar o deshabilitar el servicio ledger.                                                                                                                                                                           | `true`                                                                       |
| `ledger.name`                                          | Nombre del servicio.                                                                                                                                                                                                   | `"ledger"`                                                                   |
| `ledger.replicaCount`                                  | Número de réplicas para el servicio ledger.                                                                                                                                                                            | `2`                                                                          |
| `ledger.revisionHistoryLimit`                          | Número de ReplicaSets antiguos que se conservan para revertir el despliegue.                                                                                                                                           | `10`                                                                         |
| `ledger.image.repository`                              | Repositorio para la imagen del contenedor del servicio ledger.                                                                                                                                                         | `"lerianstudio/midaz-ledger"`                                                |
| `ledger.image.pullPolicy`                              | Política de extracción de imagen.                                                                                                                                                                                      | `"IfNotPresent"`                                                             |
| `ledger.image.tag`                                     | Etiqueta de imagen usada para el despliegue.                                                                                                                                                                           | appVersion del chart (p. ej. `"3.8.0"`); si está vacía, usa Chart.AppVersion |
| `ledger.imagePullSecrets`                              | Secretos para extraer imágenes de un registro privado.                                                                                                                                                                 | `[]`                                                                         |
| `ledger.nameOverride`                                  | Anula el nombre predeterminado generado por Helm.                                                                                                                                                                      | `""`                                                                         |
| `ledger.fullnameOverride`                              | Anula el nombre completo generado por Helm.                                                                                                                                                                            | `""`                                                                         |
| `ledger.podAnnotations`                                | Anotaciones de pod para metadatos adicionales.                                                                                                                                                                         | `{}`                                                                         |
| `ledger.podSecurityContext`                            | Contexto de seguridad aplicado a nivel de pod.                                                                                                                                                                         | `{}`                                                                         |
| `ledger.securityContext.*`                             | Define ajustes de contexto de seguridad para el contenedor.                                                                                                                                                            | Ver `values.yaml`                                                            |
| `ledger.pdb.enabled`                                   | Especifica si PodDisruptionBudget está habilitado.                                                                                                                                                                     | `true`                                                                       |
| `ledger.pdb.minAvailable`                              | Número mínimo de pods disponibles.                                                                                                                                                                                     | `1`                                                                          |
| `ledger.pdb.maxUnavailable`                            | Número máximo de pods no disponibles.                                                                                                                                                                                  | `1`                                                                          |
| `ledger.pdb.annotations`                               | Anotaciones para el PodDisruptionBudget.                                                                                                                                                                               | `{}`                                                                         |
| `ledger.deploymentUpdate.*`                            | Estrategia de actualización del despliegue.                                                                                                                                                                            | Ver `values.yaml`                                                            |
| `ledger.service.type`                                  | Tipo de servicio de Kubernetes.                                                                                                                                                                                        | `"ClusterIP"`                                                                |
| `ledger.service.port`                                  | Puerto para la API HTTP.                                                                                                                                                                                               | `3002`                                                                       |
| `ledger.service.annotations`                           | Anotaciones para el servicio.                                                                                                                                                                                          | `{}`                                                                         |
| `ledger.ingress.enabled`                               | Especifica si Ingress está habilitado.                                                                                                                                                                                 | `false`                                                                      |
| `ledger.ingress.className`                             | Nombre de clase de Ingress.                                                                                                                                                                                            | `""`                                                                         |
| `ledger.ingress.annotations`                           | Anotaciones adicionales de ingress.                                                                                                                                                                                    | `{}`                                                                         |
| `ledger.ingress.hosts`                                 | Hosts configurados para Ingress y rutas asociadas.                                                                                                                                                                     | `[]`                                                                         |
| `ledger.ingress.tls`                                   | Configuraciones TLS para Ingress.                                                                                                                                                                                      | `[]`                                                                         |
| `ledger.resources.*`                                   | Solicitudes/límites de recursos de CPU/Memoria.                                                                                                                                                                        | Ver `values.yaml`                                                            |
| `ledger.livenessProbe.*`                               | Campos de la sonda de liveness que sobrescriben los valores por defecto del chart: `path: /health`, `initialDelaySeconds: 0`, `periodSeconds: 10`, `timeoutSeconds: 1`, `successThreshold: 1`, `failureThreshold: 3`.  | `{}`                                                                         |
| `ledger.readinessProbe.*`                              | Campos de la sonda de readiness que sobrescriben los valores por defecto del chart: `path: /readyz`, `initialDelaySeconds: 0`, `periodSeconds: 10`, `timeoutSeconds: 1`, `successThreshold: 1`, `failureThreshold: 3`. | `{}`                                                                         |
| `ledger.initContainer.timeoutSeconds`                  | Segundos que el init container espera a cada endpoint de base de datos y de broker antes de que el pod falle al iniciar.                                                                                               | `300`                                                                        |
| `ledger.autoscaling.enabled`                           | Especifica si el autoescalado está habilitado.                                                                                                                                                                         | `true`                                                                       |
| `ledger.autoscaling.minReplicas`                       | Número mínimo de réplicas para autoescalado.                                                                                                                                                                           | `2`                                                                          |
| `ledger.autoscaling.maxReplicas`                       | Número máximo de réplicas para autoescalado.                                                                                                                                                                           | `9`                                                                          |
| `ledger.autoscaling.targetCPUUtilizationPercentage`    | Porcentaje objetivo de utilización de CPU para autoescalado.                                                                                                                                                           | `80`                                                                         |
| `ledger.autoscaling.targetMemoryUtilizationPercentage` | Porcentaje objetivo de utilización de memoria para autoescalado.                                                                                                                                                       | `80`                                                                         |
| `ledger.nodeSelector`                                  | Selectores de nodo para programación de pods.                                                                                                                                                                          | `{}`                                                                         |
| `ledger.tolerations`                                   | Tolerancias para programación de pods.                                                                                                                                                                                 | `{}`                                                                         |
| `ledger.affinity`                                      | Reglas de afinidad para programación de pods.                                                                                                                                                                          | `{}`                                                                         |
| `ledger.configmap.*`                                   | Variables de entorno para el servicio.                                                                                                                                                                                 | Ver `values.yaml`                                                            |
| `ledger.secrets.*`                                     | Secretos para el servicio.                                                                                                                                                                                             | Ver `values.yaml`                                                            |
| `ledger.useExistingSecret`                             | Usar un secreto existente en lugar de crear uno nuevo.                                                                                                                                                                 | `false`                                                                      |
| `ledger.existingSecretName`                            | El nombre del secreto existente a usar.                                                                                                                                                                                | `""`                                                                         |
| `ledger.extraEnvVars`                                  | Una lista de variables de entorno adicionales.                                                                                                                                                                         | `[]`                                                                         |
| `ledger.serviceAccount.create`                         | Especifica si se debe crear la cuenta de servicio.                                                                                                                                                                     | `true`                                                                       |
| `ledger.serviceAccount.annotations`                    | Anotaciones para la cuenta de servicio.                                                                                                                                                                                | `{}`                                                                         |
| `ledger.serviceAccount.name`                           | Nombre de cuenta de servicio. Si no se define, se generará automáticamente.                                                                                                                                            | `""`                                                                         |

#### Crear secreto de Ledger manualmente

Si deseas usar un Secret de Kubernetes existente para el servicio ledger, puedes crearlo manualmente:

```bash theme={null}
kubectl create secret generic midaz-ledger \
  --from-literal=DB_ONBOARDING_PASSWORD='<tu-contraseña-db-onboarding>' \
  --from-literal=DB_ONBOARDING_REPLICA_PASSWORD='<tu-contraseña-db-onboarding-replica>' \
  --from-literal=MONGO_ONBOARDING_PASSWORD='<tu-contraseña-mongo-onboarding>' \
  --from-literal=DB_TRANSACTION_PASSWORD='<tu-contraseña-db-transaction>' \
  --from-literal=DB_TRANSACTION_REPLICA_PASSWORD='<tu-contraseña-db-transaction-replica>' \
  --from-literal=MONGO_TRANSACTION_PASSWORD='<tu-contraseña-mongo-transaction>' \
  --from-literal=REDIS_PASSWORD='<tu-contraseña-redis>' \
  --from-literal=RABBITMQ_DEFAULT_PASS='<tu-contraseña-rabbitmq>' \
  --from-literal=RABBITMQ_CONSUMER_PASS='<tu-contraseña-consumer-rabbitmq>' \
  -n midaz
```

<Note>
  El servicio Ledger usa credenciales de base de datos específicas por módulo (onboarding y transaction) ya que combina ambos módulos.
</Note>

Luego configura el servicio Ledger para usar este secreto existente:

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

### CRM (Customer relationship management)

El servicio `crm` proporciona APIs para gestionar datos de holders y sus relaciones con las cuentas del ledger. Anteriormente disponible como un chart separado (`plugin-crm`) desplegado en el namespace `midaz-plugins`, el CRM ahora está integrado en el chart principal de Helm de Midaz y se despliega en el namespace `midaz`.

<Note>
  Si actualmente estás usando `plugin-crm` en el namespace `midaz-plugins`, recomendamos migrar a este nuevo workload de CRM integrado. Consulta la guía de [Actualización de Helm](/es/platform/helm/midaz/midaz-upgrade-guide) para los pasos de migración.
</Note>

<Tip>
  Para más detalles sobre la funcionalidad de CRM, consulta la [Documentación de CRM](/es/midaz/crm/crm-overview).
</Tip>

**Habilitar el servicio CRM:**

```yaml theme={null}
crm:
  enabled: true
  configmap:
    MONGO_HOST: "midaz-mongodb"  # Usa tu host de MongoDB
    MONGO_NAME: "crm"
    MONGO_USER: "midaz"
  secrets:
    MONGO_PASSWORD: "lerian"
```

| Parámetro                                           | Descripción                                                                                                                                                                                                            | Valor predeterminado                    |
| :-------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- |
| `crm.enabled`                                       | Habilitar o deshabilitar el servicio CRM.                                                                                                                                                                              | `false`                                 |
| `crm.name`                                          | Nombre del servicio.                                                                                                                                                                                                   | `"crm"`                                 |
| `crm.replicaCount`                                  | Número de réplicas para el servicio CRM.                                                                                                                                                                               | `1`                                     |
| `crm.revisionHistoryLimit`                          | Número de ReplicaSets antiguos que se conservan para revertir el despliegue.                                                                                                                                           | `10`                                    |
| `crm.image.repository`                              | Repositorio para la imagen del contenedor del servicio CRM.                                                                                                                                                            | `"lerianstudio/midaz-crm"`              |
| `crm.image.pullPolicy`                              | Política de extracción de imagen.                                                                                                                                                                                      | `"Always"`                              |
| `crm.image.tag`                                     | Etiqueta de imagen usada para el despliegue.                                                                                                                                                                           | appVersion del chart (p. ej. `"3.8.0"`) |
| `crm.imagePullSecrets`                              | Secretos para extraer imágenes de un registro privado.                                                                                                                                                                 | `[]`                                    |
| `crm.nameOverride`                                  | Anula el nombre predeterminado generado por Helm.                                                                                                                                                                      | `""`                                    |
| `crm.fullnameOverride`                              | Anula el nombre completo generado por Helm.                                                                                                                                                                            | `""`                                    |
| `crm.podAnnotations`                                | Anotaciones de pod para metadatos adicionales.                                                                                                                                                                         | `{}`                                    |
| `crm.podSecurityContext`                            | Contexto de seguridad aplicado a nivel de pod.                                                                                                                                                                         | `{}`                                    |
| `crm.securityContext.*`                             | Define ajustes de contexto de seguridad para el contenedor.                                                                                                                                                            | Ver `values.yaml`                       |
| `crm.pdb.enabled`                                   | Especifica si PodDisruptionBudget está habilitado.                                                                                                                                                                     | `true`                                  |
| `crm.pdb.minAvailable`                              | Número mínimo de pods disponibles.                                                                                                                                                                                     | `1`                                     |
| `crm.pdb.maxUnavailable`                            | Número máximo de pods no disponibles.                                                                                                                                                                                  | `1`                                     |
| `crm.pdb.annotations`                               | Anotaciones para el PodDisruptionBudget.                                                                                                                                                                               | `{}`                                    |
| `crm.deploymentUpdate.type`                         | Tipo de estrategia de despliegue.                                                                                                                                                                                      | `"RollingUpdate"`                       |
| `crm.deploymentUpdate.maxSurge`                     | Número máximo de pods que pueden crearse sobre el número deseado de pods.                                                                                                                                              | `1`                                     |
| `crm.deploymentUpdate.maxUnavailable`               | Número máximo de pods que pueden estar no disponibles durante la actualización.                                                                                                                                        | `1`                                     |
| `crm.service.type`                                  | Tipo de servicio de Kubernetes.                                                                                                                                                                                        | `"ClusterIP"`                           |
| `crm.service.port`                                  | Puerto del servicio.                                                                                                                                                                                                   | `4003`                                  |
| `crm.service.annotations`                           | Anotaciones para el servicio.                                                                                                                                                                                          | `{}`                                    |
| `crm.ingress.enabled`                               | Especifica si Ingress está habilitado.                                                                                                                                                                                 | `false`                                 |
| `crm.ingress.className`                             | Nombre de clase de Ingress.                                                                                                                                                                                            | `""`                                    |
| `crm.ingress.annotations`                           | Anotaciones adicionales de ingress.                                                                                                                                                                                    | `{}`                                    |
| `crm.ingress.hosts`                                 | Hosts configurados para Ingress y rutas asociadas.                                                                                                                                                                     | `[]`                                    |
| `crm.ingress.tls`                                   | Configuraciones TLS para Ingress.                                                                                                                                                                                      | `[]`                                    |
| `crm.resources.*`                                   | Solicitudes/límites de recursos de CPU/Memoria.                                                                                                                                                                        | Ver `values.yaml`                       |
| `crm.livenessProbe.*`                               | Campos de la sonda de liveness que sobrescriben los valores por defecto del chart: `path: /health`, `initialDelaySeconds: 10`, `periodSeconds: 5`, `timeoutSeconds: 1`, `successThreshold: 1`, `failureThreshold: 3`.  | `{}`                                    |
| `crm.readinessProbe.*`                              | Campos de la sonda de readiness que sobrescriben los valores por defecto del chart: `path: /readyz`, `initialDelaySeconds: 10`, `periodSeconds: 5`, `timeoutSeconds: 1`, `successThreshold: 1`, `failureThreshold: 3`. | `{}`                                    |
| `crm.autoscaling.enabled`                           | Especifica si el autoescalado está habilitado.                                                                                                                                                                         | `true`                                  |
| `crm.autoscaling.minReplicas`                       | Número mínimo de réplicas para autoescalado.                                                                                                                                                                           | `1`                                     |
| `crm.autoscaling.maxReplicas`                       | Número máximo de réplicas para autoescalado.                                                                                                                                                                           | `3`                                     |
| `crm.autoscaling.targetCPUUtilizationPercentage`    | Porcentaje objetivo de utilización de CPU para autoescalado.                                                                                                                                                           | `80`                                    |
| `crm.autoscaling.targetMemoryUtilizationPercentage` | Porcentaje objetivo de utilización de memoria para autoescalado.                                                                                                                                                       | `80`                                    |
| `crm.nodeSelector`                                  | Selectores de nodo para programación de pods.                                                                                                                                                                          | `{}`                                    |
| `crm.tolerations`                                   | Tolerancias para programación de pods.                                                                                                                                                                                 | `{}`                                    |
| `crm.affinity`                                      | Reglas de afinidad para programación de pods.                                                                                                                                                                          | `{}`                                    |
| `crm.configmap.*`                                   | Variables de entorno para el servicio.                                                                                                                                                                                 | Ver `values.yaml`                       |
| `crm.secrets.*`                                     | Secretos para el servicio.                                                                                                                                                                                             | Ver `values.yaml`                       |
| `crm.useExistingSecret`                             | Usar un secreto existente en lugar de crear uno nuevo.                                                                                                                                                                 | `false`                                 |
| `crm.existingSecretName`                            | El nombre del secreto existente a usar.                                                                                                                                                                                | `""`                                    |
| `crm.extraEnvVars`                                  | Una lista de variables de entorno adicionales.                                                                                                                                                                         | `{}`                                    |

#### Crear secreto de CRM manualmente

Si deseas usar un Secret de Kubernetes existente para el servicio CRM:

```bash theme={null}
kubectl create secret generic midaz-crm \
  --from-literal=LCRYPTO_HASH_SECRET_KEY='<tu-clave-secreta-hash>' \
  --from-literal=LCRYPTO_ENCRYPT_SECRET_KEY='<tu-clave-secreta-cifrado>' \
  --from-literal=MONGO_PASSWORD='<tu-contraseña-mongo>' \
  -n midaz
```

Luego configura el servicio CRM para usar este secreto existente:

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