Saltar al contenido principal
El chart de Helm de Midaz despliega cuatro posibles componentes de servicio: Ledger (unificado, recomendado), Onboarding (legacy), Transaction (legacy) y CRM (opcional). Cada componente tiene su propio deployment, servicio, ingress y configuración de autoescalado.
Decisión rápida: Nuevas instalaciones → habilita Ledger, deshabilita Onboarding y Transaction. Migrando desde v4.x → consulta la Guía de migración. ¿Necesitas CRM? → configura crm.enabled: true.
Recomendado para nuevas instalaciones: Usa el servicio unificado Ledger. Los servicios separados de Onboarding y Transaction aún están soportados pero se convertirán en legacy en una futura versión.

Ledger (recomendado)

El servicio ledger es un servicio unificado que combina la funcionalidad de los módulos onboarding y transaction en un solo despliegue. Este servicio es recomendado para nuevas instalaciones y será obligatorio en futuras versiones.
Cuando ledger.enabled está configurado como true, los servicios onboarding y transaction se deshabilitan automáticamente (a menos que migration.allowAllServices esté configurado como true para propósitos de prueba).
Habilitar el servicio Ledger:
ledger:
  enabled: true

onboarding:
  enabled: false

transaction:
  enabled: false
Cuando Ledger está habilitado, los ingresses de onboarding y transaction redirigirán automáticamente el tráfico al servicio ledger, manteniendo compatibilidad con configuraciones DNS existentes.
ParámetroDescripciónValor predeterminado
ledger.enabledHabilitar o deshabilitar el servicio ledger.false
ledger.nameNombre del servicio."ledger"
ledger.replicaCountNúmero de réplicas para el servicio ledger.1
ledger.image.repositoryRepositorio para la imagen del contenedor del servicio ledger."lerianstudio/midaz-ledger"
ledger.image.pullPolicyPolítica de extracción de imagen."IfNotPresent"
ledger.image.tagEtiqueta de imagen usada para el despliegue."" (por defecto Chart.AppVersion)
ledger.imagePullSecretsSecretos para extraer imágenes de un registro privado.[]
ledger.nameOverrideAnula el nombre predeterminado generado por Helm.""
ledger.fullnameOverrideAnula el nombre completo generado por Helm.""
ledger.podAnnotationsAnotaciones de pod para metadatos adicionales.{}
ledger.podSecurityContextContexto de seguridad aplicado a nivel de pod.{}
ledger.securityContext.*Define ajustes de contexto de seguridad para el contenedor.Ver values.yaml
ledger.pdb.enabledEspecifica si PodDisruptionBudget está habilitado.true
ledger.pdb.minAvailableNúmero mínimo de pods disponibles.1
ledger.pdb.maxUnavailableNúmero máximo de pods no disponibles.1
ledger.pdb.annotationsAnotaciones para el PodDisruptionBudget.{}
ledger.deploymentUpdate.*Estrategia de actualización del despliegue.Ver values.yaml
ledger.service.typeTipo de servicio de Kubernetes."ClusterIP"
ledger.service.portPuerto para la API HTTP.3002
ledger.service.annotationsAnotaciones para el servicio.{}
ledger.ingress.enabledEspecifica si Ingress está habilitado.false
ledger.ingress.classNameNombre de clase de Ingress.""
ledger.ingress.annotationsAnotaciones adicionales de ingress.{}
ledger.ingress.hostsHosts configurados para Ingress y rutas asociadas.[]
ledger.ingress.tlsConfiguraciones TLS para Ingress.[]
ledger.resources.*Solicitudes/límites de recursos de CPU/Memoria.Ver values.yaml
ledger.autoscaling.enabledEspecifica si el autoescalado está habilitado.true
ledger.autoscaling.minReplicasNúmero mínimo de réplicas para autoescalado.2
ledger.autoscaling.maxReplicasNúmero máximo de réplicas para autoescalado.5
ledger.autoscaling.targetCPUUtilizationPercentagePorcentaje objetivo de utilización de CPU para autoescalado.80
ledger.autoscaling.targetMemoryUtilizationPercentagePorcentaje objetivo de utilización de memoria para autoescalado.80
ledger.nodeSelectorSelectores de nodo para programación de pods.{}
ledger.tolerationsTolerancias para programación de pods.{}
ledger.affinityReglas 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.useExistingSecretUsar un secreto existente en lugar de crear uno nuevo.false
ledger.existingSecretNameEl nombre del secreto existente a usar.""
ledger.extraEnvVarsUna lista de variables de entorno adicionales.[]
ledger.serviceAccount.createEspecifica si se debe crear la cuenta de servicio.true
ledger.serviceAccount.annotationsAnotaciones para la cuenta de servicio.{}
ledger.serviceAccount.nameNombre 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:
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
El servicio Ledger usa credenciales de base de datos específicas por módulo (onboarding y transaction) ya que combina ambos módulos.
Luego configura el servicio Ledger para usar este secreto existente:
ledger:
  enabled: true
  useExistingSecret: true
  existingSecretName: "midaz-ledger"

Onboarding (legacy)

El servicio Onboarding aún está soportado pero se convertirá en legacy en una futura versión. Recomendamos usar el servicio unificado Ledger para nuevas instalaciones.
ParámetroDescripciónValor predeterminado
onboarding.nameNombre del servicio."onboarding"
onboarding.replicaCountNúmero de réplicas para el servicio onboarding.2
onboarding.image.repositoryRepositorio para la imagen del contenedor del servicio onboarding."lerianstudio/midaz-onboarding"
onboarding.image.pullPolicyPolítica de extracción de imagen."IfNotPresent"
onboarding.image.tagEtiqueta de imagen usada para el despliegue."3.5.3"
onboarding.imagePullSecretsSecretos para extraer imágenes de un registro privado.[]
onboarding.nameOverrideAnula el nombre predeterminado generado por Helm.""
onboarding.fullnameOverrideAnula el nombre completo generado por Helm.""
onboarding.podAnnotationsAnotaciones de pod para metadatos adicionales.{}
onboarding.podSecurityContextContexto de seguridad aplicado a nivel de pod.{}
onboarding.securityContext.*Define ajustes de contexto de seguridad para el contenedor.Ver values.yaml
onboarding.pdb.enabledEspecifica si PodDisruptionBudget está habilitado.true
onboarding.pdb.minAvailableNúmero mínimo de pods disponibles.1
onboarding.pdb.maxUnavailableNúmero máximo de pods no disponibles.1
onboarding.pdb.annotationsAnotaciones para el PodDisruptionBudget.{}
onboarding.deploymentUpdate.*Estrategia de actualización del despliegue.Ver values.yaml
onboarding.service.typeTipo de servicio de Kubernetes."ClusterIP"
onboarding.service.portPuerto para la API HTTP.3000
onboarding.service.annotationsAnotaciones para el servicio.{}
onboarding.ingress.enabledEspecifica si Ingress está habilitado.false
onboarding.ingress.classNameNombre de clase de Ingress.""
onboarding.ingress.annotationsAnotaciones adicionales de ingress.{}
onboarding.ingress.hostsHosts configurados para Ingress y rutas asociadas.""
onboarding.ingress.tlsConfiguraciones TLS para Ingress.[]
onboarding.resources.*Solicitudes/límites de recursos de CPU/Memoria.Ver values.yaml
onboarding.autoscaling.enabledEspecifica si el autoescalado está habilitado.true
onboarding.autoscaling.minReplicasNúmero mínimo de réplicas para autoescalado.2
onboarding.autoscaling.maxReplicasNúmero máximo de réplicas para autoescalado.5
onboarding.autoscaling.targetCPUUtilizationPercentagePorcentaje objetivo de utilización de CPU para autoescalado.80
onboarding.autoscaling.targetMemoryUtilizationPercentagePorcentaje objetivo de utilización de memoria para autoescalado.80
onboarding.nodeSelectorSelectores de nodo para programación de pods.{}
onboarding.tolerationsTolerancias para programación de pods.{}
onboarding.affinityReglas de afinidad para programación de pods.{}
onboarding.configmap.*Variables de entorno para el servicio.Ver values.yaml
onboarding.secrets.*Secretos para el servicio.Ver values.yaml
onboarding.useExistingSecretUsar un secreto existente en lugar de crear uno nuevo.false
onboarding.existingSecretNameEl nombre del secreto existente a usar.""
onboarding.extraEnvVarsUna lista de variables de entorno adicionales.[]
onboarding.serviceAccount.createEspecifica si se debe crear la cuenta de servicio.true
onboarding.serviceAccount.annotationsAnotaciones para la cuenta de servicio.{}
onboarding.serviceAccount.nameNombre de cuenta de servicio. Si no se define, se generará automáticamente.""

Crear secreto de Onboarding manualmente

Si deseas usar un Secret de Kubernetes existente para el servicio onboarding:
kubectl create secret generic midaz-onboarding \
  --from-literal=MONGO_PASSWORD='<tu-contraseña-mongo>' \
  --from-literal=DB_PASSWORD='<tu-contraseña-db>' \
  --from-literal=DB_REPLICA_PASSWORD='<tu-contraseña-db-replica>' \
  --from-literal=RABBITMQ_DEFAULT_PASS='<tu-contraseña-rabbitmq>' \
  --from-literal=REDIS_PASSWORD='<tu-contraseña-redis>' \
  -n midaz
Luego configura el servicio onboarding para usar este secreto existente:
onboarding:
  useExistingSecret: true
  existingSecretName: "midaz-onboarding"

Transaction (legacy)

El servicio Transaction aún está soportado pero se convertirá en legacy en una futura versión. Recomendamos usar el servicio unificado Ledger para nuevas instalaciones.
ParámetroDescripciónValor predeterminado
transaction.nameNombre del servicio."transaction"
transaction.replicaCountNúmero de réplicas para el servicio transaction.1
transaction.image.repositoryRepositorio para la imagen del contenedor del servicio transaction."lerianstudio/midaz-transaction"
transaction.image.pullPolicyPolítica de extracción de imagen."IfNotPresent"
transaction.image.tagEtiqueta de imagen usada para el despliegue."3.5.3"
transaction.imagePullSecretsSecretos para extraer imágenes de un registro privado.[]
transaction.nameOverrideAnula el nombre predeterminado generado por Helm.""
transaction.fullnameOverrideAnula el nombre completo generado por Helm.""
transaction.podAnnotationsAnotaciones de pod para metadatos adicionales.{}
transaction.podSecurityContextContexto de seguridad para el pod.{}
transaction.securityContext.*Define ajustes de contexto de seguridad para el contenedor.Ver values.yaml
transaction.pdb.enabledHabilitar o deshabilitar PodDisruptionBudget.true
transaction.pdb.minAvailableNúmero mínimo de pods disponibles.2
transaction.pdb.maxUnavailableNúmero máximo de pods no disponibles.1
transaction.pdb.annotationsAnotaciones para el PodDisruptionBudget.{}
transaction.deploymentUpdate.*Estrategia de actualización del despliegue.Ver values.yaml
transaction.service.typeTipo de servicio de Kubernetes."ClusterIP"
transaction.service.portPuerto para la API HTTP.3001
transaction.service.annotationsAnotaciones para el servicio.{}
transaction.ingress.enabledHabilitar o deshabilitar ingress.false
transaction.ingress.classNameNombre de clase de Ingress.""
transaction.ingress.annotationsAnotaciones adicionales de ingress.{}
transaction.ingress.hostsHosts configurados para ingress y rutas asociadas.[]
transaction.ingress.tlsConfiguración TLS para ingress.[]
transaction.resources.*Solicitudes/límites de recursos de CPU/Memoria.Ver values.yaml
transaction.autoscaling.enabledHabilitar o deshabilitar autoescalado horizontal de pods.true
transaction.autoscaling.minReplicasNúmero mínimo de réplicas para autoescalado.1
transaction.autoscaling.maxReplicasNúmero máximo de réplicas para autoescalado.5
transaction.autoscaling.targetCPUUtilizationPercentagePorcentaje objetivo de utilización de CPU para autoescalado.80
transaction.autoscaling.targetMemoryUtilizationPercentagePorcentaje objetivo de utilización de memoria para autoescalado.80
transaction.nodeSelectorSelector de nodo para programar pods en nodos específicos.{}
transaction.tolerationsTolerancias para programación en nodos con taints.{}
transaction.affinityReglas de afinidad para programación de pods.{}
transaction.configmap.*Variables de entorno para el servicio.Ver values.yaml
transaction.secrets.*Secretos para el servicio.Ver values.yaml
transaction.useExistingSecretUsar un secreto existente en lugar de crear uno nuevo.false
transaction.existingSecretNameEl nombre del secreto existente a usar.""
transaction.extraEnvVarsUna lista de variables de entorno adicionales.[]
transaction.serviceAccount.createEspecifica si se debe crear una ServiceAccount.true
transaction.serviceAccount.annotationsAnotaciones para la ServiceAccount.{}
transaction.serviceAccount.nameNombre de la cuenta de servicio.""

Crear secreto de Transaction manualmente

Si deseas usar un Secret de Kubernetes existente para el servicio transaction:
kubectl create secret generic midaz-transaction \
  --from-literal=MONGO_PASSWORD='<tu-contraseña-mongo>' \
  --from-literal=DB_PASSWORD='<tu-contraseña-db>' \
  --from-literal=DB_REPLICA_PASSWORD='<tu-contraseña-db-replica>' \
  --from-literal=RABBITMQ_DEFAULT_PASS='<tu-contraseña-rabbitmq>' \
  --from-literal=RABBITMQ_CONSUMER_PASS='<tu-contraseña-consumer-rabbitmq>' \
  --from-literal=REDIS_PASSWORD='<tu-contraseña-redis>' \
  -n midaz
El servicio transaction requiere una clave de secreto adicional RABBITMQ_CONSUMER_PASS comparado con onboarding.
Luego configura el servicio transaction para usar este secreto existente:
transaction:
  useExistingSecret: true
  existingSecretName: "midaz-transaction"

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.
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 para los pasos de migración.
Para más detalles sobre la funcionalidad de CRM, consulta la Documentación de CRM.
Habilitar el servicio CRM:
crm:
  enabled: true
  configmap:
    MONGO_HOST: "midaz-mongodb"  # Usa tu host de MongoDB
    MONGO_NAME: "crm"
    MONGO_USER: "midaz"
  secrets:
    MONGO_PASSWORD: "lerian"
ParámetroDescripciónValor predeterminado
crm.enabledHabilitar o deshabilitar el servicio CRM.false
crm.nameNombre del servicio."crm"
crm.replicaCountNúmero de réplicas para el servicio CRM.1
crm.image.repositoryRepositorio para la imagen del contenedor del servicio CRM."lerianstudio/midaz-crm"
crm.image.pullPolicyPolítica de extracción de imagen."Always"
crm.image.tagEtiqueta de imagen usada para el despliegue."3.5.3"
crm.imagePullSecretsSecretos para extraer imágenes de un registro privado.[]
crm.nameOverrideAnula el nombre predeterminado generado por Helm.""
crm.fullnameOverrideAnula el nombre completo generado por Helm.""
crm.podAnnotationsAnotaciones de pod para metadatos adicionales.{}
crm.podSecurityContextContexto de seguridad aplicado a nivel de pod.{}
crm.securityContext.*Define ajustes de contexto de seguridad para el contenedor.Ver values.yaml
crm.pdb.enabledEspecifica si PodDisruptionBudget está habilitado.true
crm.pdb.minAvailableNúmero mínimo de pods disponibles.1
crm.pdb.maxUnavailableNúmero máximo de pods no disponibles.1
crm.pdb.annotationsAnotaciones para el PodDisruptionBudget.{}
crm.deploymentUpdate.typeTipo de estrategia de despliegue."RollingUpdate"
crm.deploymentUpdate.maxSurgeNúmero máximo de pods que pueden crearse sobre el número deseado de pods.1
crm.deploymentUpdate.maxUnavailableNúmero máximo de pods que pueden estar no disponibles durante la actualización.1
crm.service.typeTipo de servicio de Kubernetes."ClusterIP"
crm.service.portPuerto del servicio.4003
crm.ingress.enabledEspecifica si Ingress está habilitado.false
crm.ingress.classNameNombre de clase de Ingress.""
crm.ingress.annotationsAnotaciones adicionales de ingress.{}
crm.ingress.hostsHosts configurados para Ingress y rutas asociadas.[]
crm.ingress.tlsConfiguraciones TLS para Ingress.[]
crm.resources.*Solicitudes/límites de recursos de CPU/Memoria.Ver values.yaml
crm.autoscaling.enabledEspecifica si el autoescalado está habilitado.true
crm.autoscaling.minReplicasNúmero mínimo de réplicas para autoescalado.1
crm.autoscaling.maxReplicasNúmero máximo de réplicas para autoescalado.3
crm.autoscaling.targetCPUUtilizationPercentagePorcentaje objetivo de utilización de CPU para autoescalado.80
crm.autoscaling.targetMemoryUtilizationPercentagePorcentaje objetivo de utilización de memoria para autoescalado.80
crm.nodeSelectorSelectores de nodo para programación de pods.{}
crm.tolerationsTolerancias para programación de pods.{}
crm.affinityReglas 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.useExistingSecretUsar un secreto existente en lugar de crear uno nuevo.false
crm.existingSecretNameEl nombre del secreto existente a usar.""
crm.extraEnvVarsUna lista de variables de entorno adicionales.{}

Crear secreto de CRM manualmente

Si deseas usar un Secret de Kubernetes existente para el servicio CRM:
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:
crm:
  enabled: true
  useExistingSecret: true
  existingSecretName: "midaz-crm"