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

# Reporter con Helm

> Despliega Reporter en Kubernetes con el chart reporter-helm, incluidas sus cargas de trabajo manager y worker, sus dependencias incluidas y sus secrets obligatorios.

Reporter genera informes financieros, presentaciones regulatorias y exportaciones de datos personalizadas a partir de los datos del ledger de Midaz. Ejecuta un manager y un worker para que la generación de informes escale aparte de la API. El nombre del chart es `reporter-helm`.

## Qué instala el chart

***

El chart instala dos cargas de trabajo:

* **Manager**: el servicio de API que almacena las plantillas y orquesta la generación de informes. Recibe un Deployment, un Service, un ConfigMap, un Secret, un ServiceAccount, un ClusterRole, un HorizontalPodAutoscaler, un PodDisruptionBudget y un Ingress opcional.
* **Worker**: el procesador en segundo plano que renderiza los informes. Se ejecuta como un ScaledJob de KEDA y escala según la profundidad de la cola.

El manager publica un job en RabbitMQ. El worker lo consume, lee los datos del ledger, renderiza el documento y escribe el resultado en el almacenamiento de objetos.

El chart incluye KEDA, un almacén de objetos compatible con S3, MongoDB, RabbitMQ y Valkey, y habilita cada uno de forma predeterminada. Deshabilita cualquiera de ellos para usar en su lugar un servicio administrado externamente. Define `keda.external: true` cuando ya se ejecuta un operador de KEDA en el cluster.

## Prerrequisitos

***

* Un despliegue de Midaz en ejecución con endpoints de API alcanzables y una réplica de base de datos legible.
* Una storage class que admita aprovisionamiento dinámico, para MongoDB, RabbitMQ y el almacén de objetos.
* Helm 3.8 o posterior para la compatibilidad con registries OCI.

## Instalación

***

Lee primero la versión actual del chart y luego instala:

```bash theme={null}
helm show chart oci://registry-1.docker.io/lerianstudio/reporter-helm
```

```bash theme={null}
helm install reporter oci://registry-1.docker.io/lerianstudio/reporter-helm \
  --version <version> -n reporter --create-namespace -f my-values.yaml
```

## Values que debes definir

***

Define estas claves en el bloque `secrets` de nivel superior, o proporciona tu propio Secret:

| Clave                                                        | Propósito                                                                                                                                                                |
| :----------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RABBITMQ_DEFAULT_PASS`                                      | La contraseña del broker. El RabbitMQ incluido la lee de este Secret.                                                                                                    |
| `RABBITMQ_ERLANG_COOKIE`                                     | La cookie de Erlang para el broker incluido. Mantenla estable: un valor cambiado rompe el cluster al actualizar.                                                         |
| `DATASOURCE_ONBOARDING_PASSWORD`                             | La contraseña de la base de datos de Midaz que leen los informes.                                                                                                        |
| `OBJECT_STORAGE_ACCESS_KEY_ID` y `OBJECT_STORAGE_SECRET_KEY` | Acceso al bucket que contiene los informes generados.                                                                                                                    |
| `DATASOURCE_CRED_ENC_KEY`                                    | Cifra las credenciales de fuente de datos almacenadas. Usa una clave de 16, 24 o 32 bytes codificada en hexadecimal. El chart rechaza el placeholder que viene incluido. |
| `APP_ENC_KEY`                                                | La clave de cifrado de la aplicación. Usa una clave de 32 bytes codificada en base64.                                                                                    |

Deja `MONGO_PASSWORD` vacío mientras el subchart de MongoDB incluido esté habilitado. El subchart genera la contraseña en su propio Secret, y los servicios la leen de ahí.

<h2 id="optional-crm-datasource">
  Fuente de datos de CRM opcional
</h2>

***

El chart `4.3.0` de Reporter no habilita CRM de forma predeterminada, pero pasa las claves bajo `common.configmap` y `secrets` a ambas cargas de trabajo de Reporter. Cuando una plantilla de informe usa `plugin_crm`, combina los siguientes values en tu archivo de values existente. Reemplaza cada placeholder mediante tu proceso aprobado de configuración y gestión de secretos.

```yaml theme={null}
common:
  configmap:
    DATASOURCE_CRM_CONFIG_NAME: "plugin_crm"
    DATASOURCE_CRM_TYPE: "mongodb"
    DATASOURCE_CRM_HOST: "<crm-mongodb-host>"
    DATASOURCE_CRM_PORT: "<crm-mongodb-port>"
    DATASOURCE_CRM_DATABASE: "<crm-database>"
    DATASOURCE_CRM_USER: "<crm-readonly-user>"
    DATASOURCE_CRM_MIDAZ_ORGANIZATION_ID: "<midaz-organization-id>"

secrets:
  DATASOURCE_CRM_PASSWORD: "<crm-readonly-password>"
  CRYPTO_HASH_SECRET_KEY_CRM: "<existing-crm-hash-key>"
  CRYPTO_ENCRYPT_SECRET_KEY_CRM: "<existing-crm-encryption-key>"
```

Mantén `DATASOURCE_CRED_ENC_KEY` sin cambios en el mismo Secret. Las claves criptográficas de CRM deben coincidir con las claves que CRM ya usa; no generes claves sustitutas. Cuando usas un Secret de Kubernetes existente, pon estas claves exactas en ese Secret y configura el mismo Secret para `manager` y `worker` (`useExistingSecret: true` y `existingSecretName`).

En un despliegue single-tenant, Manager procesa este bloque al arrancar y puede completar un `metadata.midazOrganizationId` ausente o vacío en la entrada reservada del registro `plugin_crm`. Nunca reemplaza un ID de organización persistido que no esté vacío. No crees ni hagas PATCH de `plugin_crm` a través de la API de fuentes de datos habitual: ese nombre está reservado. El Manager multi-tenant omite esta siembra; usa la ruta de aprovisionamiento específica del tenant en lugar de aplicar este ejemplo como solución alternativa.

Después de un despliegue de configuración aprobado, valida más que una carga exitosa: importa o guarda una plantilla que mapee `plugin_crm`, genera un informe, confirma que los campos de CRM se descifran y verifica que los resultados pertenecen solo a la organización de Midaz configurada. Consulta [Variables de entorno](/es/products/reporter/reporter-environment-variables#reserved-crm-datasource) y [Solución de problemas de RPT-0075](/es/reference/products/reporter/reporter-error-list#rpt-0075-crm-organization-scope-unresolved).

## Actualización y desinstalación

***

```bash theme={null}
helm upgrade reporter oci://registry-1.docker.io/lerianstudio/reporter-helm \
  --version <new-version> -n reporter -f my-values.yaml
```

```bash theme={null}
helm uninstall reporter -n reporter
```

Desinstalar elimina los recursos de Kubernetes. Deja en su lugar los PersistentVolumeClaims y los informes generados. Bórralos por separado cuando quieras recuperar el almacenamiento.

## Recursos

***

* [Documentación de Reporter](/es/products/reporter/what-is-reporter)
* [Revisa un chart antes de desplegar](/es/platform/deploy/helm-version-compatibility)
* [Repositorio de Helm charts](https://github.com/LerianStudio/helm)
