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

# Deploy do Reporter via Helm

> Faça o deploy do Reporter no Kubernetes com o chart reporter-helm, incluindo as cargas de trabalho manager e worker, as dependências empacotadas e os secrets obrigatórios.

O Reporter gera relatórios financeiros, envios regulatórios e exportações de dados personalizadas a partir dos dados do ledger do Midaz. Ele roda um manager e um worker para que a geração de relatórios escale separada da API. O nome do chart é `reporter-helm`.

## O que o chart instala

***

O chart instala duas cargas de trabalho:

* **Manager**: o serviço de API que armazena os templates e orquestra a geração de relatórios. Ele recebe um Deployment, um Service, um ConfigMap, um Secret, uma ServiceAccount, um ClusterRole, um HorizontalPodAutoscaler, um PodDisruptionBudget e um Ingress opcional.
* **Worker**: o processador em segundo plano que renderiza os relatórios. Ele roda como um ScaledJob do KEDA e escala pela profundidade da fila.

O manager publica um job no RabbitMQ. O worker o consome, lê os dados do ledger, renderiza o documento e grava o resultado no armazenamento de objetos.

O chart empacota KEDA, um armazenamento de objetos compatível com S3, MongoDB, RabbitMQ e Valkey, e habilita cada um deles por padrão. Desabilite qualquer um deles para usar um serviço gerenciado externamente no lugar. Defina `keda.external: true` quando um operador KEDA já roda no cluster.

## Pré-requisitos

***

* Um deploy do Midaz em execução com endpoints de API alcançáveis e uma réplica de banco de dados legível.
* Uma storage class que aceita provisionamento dinâmico, para o MongoDB, o RabbitMQ e o armazenamento de objetos.
* Helm 3.8 ou posterior para o suporte a registry OCI.

## Instalação

***

Leia primeiro a versão atual do chart e depois instale:

```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 você deve definir

***

Defina estas chaves no bloco `secrets` de nível superior, ou forneça o seu próprio Secret:

| Chave                                                        | Finalidade                                                                                                                                                               |
| :----------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RABBITMQ_DEFAULT_PASS`                                      | A senha do broker. O RabbitMQ empacotado a lê deste Secret.                                                                                                              |
| `RABBITMQ_ERLANG_COOKIE`                                     | O cookie Erlang do broker empacotado. Mantenha-o estável: um valor alterado quebra o cluster no upgrade.                                                                 |
| `DATASOURCE_ONBOARDING_PASSWORD`                             | A senha do banco de dados do Midaz que os relatórios leem.                                                                                                               |
| `OBJECT_STORAGE_ACCESS_KEY_ID` e `OBJECT_STORAGE_SECRET_KEY` | Acesso ao bucket que guarda os relatórios gerados.                                                                                                                       |
| `DATASOURCE_CRED_ENC_KEY`                                    | Criptografa as credenciais de fonte de dados armazenadas. Use uma chave de 16, 24 ou 32 bytes codificada em hexadecimal. O chart recusa o placeholder que vem no pacote. |
| `APP_ENC_KEY`                                                | A chave de criptografia da aplicação. Use uma chave de 32 bytes codificada em base64.                                                                                    |

Deixe `MONGO_PASSWORD` vazio enquanto o subchart MongoDB empacotado estiver habilitado. O subchart gera a senha no próprio Secret, e os serviços a leem de lá.

<h2 id="optional-crm-datasource">
  Fonte de dados de CRM opcional
</h2>

***

O chart `4.3.0` do Reporter não habilita o CRM por padrão, mas passa as chaves de `common.configmap` e `secrets` para as duas cargas de trabalho do Reporter. Quando um template de relatório usa `plugin_crm`, mescle os values a seguir no seu arquivo de values existente. Substitua cada placeholder pelo seu processo aprovado de configuração e gestão de secrets.

```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>"
```

Mantenha `DATASOURCE_CRED_ENC_KEY` sem alteração no mesmo Secret. As chaves de criptografia do CRM devem casar com as chaves que o CRM já usa; não gere chaves substitutas. Quando você usa um Secret existente do Kubernetes, coloque essas chaves exatas nesse Secret e configure o mesmo Secret para `manager` e `worker` (`useExistingSecret: true` e `existingSecretName`).

Em um deploy single-tenant, o Manager processa este bloco na inicialização e pode preencher um `metadata.midazOrganizationId` ausente ou vazio na entrada reservada `plugin_crm` do registro. Ele nunca substitui um ID de organização persistido e não vazio. Não crie nem faça PATCH em `plugin_crm` pela API comum de fontes de dados: esse nome é reservado. O Manager multi-tenant pula essa carga inicial; use o caminho de provisionamento específico do tenant em vez de aplicar este exemplo como contorno.

Depois de um rollout de configuração aprovado, valide mais do que um upload bem-sucedido: importe ou salve um template que mapeia `plugin_crm`, gere um relatório, confirme que os campos do CRM são descriptografados e verifique que os resultados pertencem apenas à organização Midaz configurada. Veja [Variáveis de ambiente](/pt/products/reporter/reporter-environment-variables#reserved-crm-datasource) e [Solução de problemas do RPT-0075](/pt/reference/products/reporter/reporter-error-list#rpt-0075-crm-organization-scope-unresolved).

## Upgrade e desinstalação

***

```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
```

A desinstalação remove os recursos do Kubernetes. Ela deixa os PersistentVolumeClaims e os relatórios gerados no lugar. Apague-os separadamente quando você quiser recuperar o armazenamento.

## Recursos

***

* [Documentação do Reporter](/pt/products/reporter/what-is-reporter)
* [Confira um chart antes do deploy](/pt/platform/deploy/helm-version-compatibility)
* [Repositório de charts Helm](https://github.com/LerianStudio/helm)
