Pular para o conteúdo principal
Este guia orienta você na atualização do seu deployment Midaz via Helm para a versão mais recente (v5.x.x). Você encontrará um início rápido para operadores experientes, seguido de caminhos de migração a partir de versões anteriores, breaking changes detalhadas e verificações pós-atualização.
Precisa revisar a instalação do Midaz com Helm? Confira o guia Usando o Helm em Estratégias de deployment antes de iniciar sua atualização.

Início Rápido


1. Verifique os pré-requisitos

  • Helm v3.8+ instalado e disponível (helm version).
  • Kubernetes v1.20+ cluster em execução.
  • Backup sua instalação existente.

2. Identifique sua versão atual

helm list -n midaz

3. Execute o comando de atualização

helm upgrade midaz oci://registry-1.docker.io/lerianstudio/midaz-helm --version 5.x.x -n midaz

4. Verifique a atualização

helm list -n midaz
kubectl get pods -n midaz

Compatibilidade de Versões


Componentv3.xv4.xv5.x
Kubernetes1.20+1.20+1.20+
Helm3.8+3.8+3.8+
PostgreSQL13+13+13+
MongoDB4.4+4.4+4.4+
Valkey7.x7.x7.x

Escolha seu caminho de migração


Selecione a versão atual do seu Helm chart para ver os passos de migração relevantes:

Migrando de v4.x para v5.x

Checklist pré-atualização

1
Faça backup dos releases Helm existentes:
helm get values -n midaz midaz > midaz-v4-backup.yaml
2
Decisão necessária: Escolha sua estratégia de deployment (serviço Ledger ou legado Onboarding/Transaction).
3
Se estiver migrando para o serviço Ledger, prepare novos secrets com prefixos específicos de módulo.
4
Agende uma janela de manutenção.

Breaking changes no v5.x

Novo serviço Ledger disponível

A partir da versão 5.0, o serviço Ledger está disponível (ledger.enabled: false por padrão). Quando habilitado, este serviço combina a funcionalidade dos módulos onboarding e transaction em um único deployment.
Os serviços separados onboarding e transaction se tornarão legado em um release futuro. O serviço Ledger unificado se tornará obrigatório. Recomendamos fortemente planejar sua migração para o serviço Ledger.
Valores padrão:
Configuraçãov4.x (antes)v5.x (depois)
ledger.enabledN/Afalse
onboarding.enabledtruetrue (desabilitado automaticamente quando ledger está habilitado)
transaction.enabledtruetrue (desabilitado automaticamente quando ledger está habilitado)
Impacto ao habilitar o Ledger:
  • Os deployments midaz-onboarding e midaz-transaction serão removidos.
  • Um novo deployment midaz-ledger será criado.
  • Os ingresses redirecionarão automaticamente para o serviço Ledger (compatibilidade DNS mantida).
  • Mudanças na estrutura de variáveis de ambiente e secrets (prefixos específicos de módulo).

Atualização da versão do app

O Midaz foi atualizado para v3.5.1.
Confira o changelog do app para a lista completa de mudanças.

Opções de migração

Opção 1: Continuar usando Onboarding e Transaction (migração gradual)

Adicione o seguinte ao seu override de valores para manter o comportamento atual:
ledger:
  enabled: false

onboarding:
  enabled: true

transaction:
  enabled: true
Isso permite que você atualize a versão do chart sem alterar sua infraestrutura.

Opção 2: Executar todos os serviços simultaneamente (período de teste/migração)

Use a flag oculta migration.allowAllServices para executar todos os três serviços durante a migração:
ledger:
  enabled: true

onboarding:
  enabled: true

transaction:
  enabled: true

migration:
  allowAllServices: true
Este modo é destinado apenas para teste e migração. Não use em produção a longo prazo.

Opção 3: Migrar para o Ledger (recomendado)

Aceite a nova arquitetura e migre para o serviço Ledger unificado:
1
Antes de atualizar: Garanta que seus bancos de dados estejam prontos (mesmos bancos, novos nomes de variáveis de ambiente).
2
Atualizar secrets: Crie novos secrets com prefixos específicos de módulo (veja a Referência de Configuração do Ledger abaixo).
3
Atualizar: Execute helm upgrade com a nova versão do chart.
4
Verificar: Confirme que o serviço Ledger está saudável e os ingresses estão funcionando.
ledger:
  enabled: true

onboarding:
  enabled: false

transaction:
  enabled: false

Novas funcionalidades no v5.x

Serviço Ledger unificado

Um novo serviço Ledger que combina os módulos onboarding e transaction em um único deployment.Características principais:
  • Endpoint HTTP único (porta 3000 por padrão)
  • Configurações de banco de dados separadas para cada módulo
  • Conexões compartilhadas de Redis e RabbitMQ
  • Novo Balance Sync Worker para processamento em background
Novas variáveis de ambiente:
# Balance Sync Worker
BALANCE_SYNC_WORKER_ENABLED: "false"
BALANCE_SYNC_MAX_WORKERS: "5"

Redirecionamento de Ingress para o Ledger

Quando o Ledger está habilitado, os ingresses existentes redirecionam automaticamente o tráfego para o serviço Ledger, mantendo compatibilidade DNS.
ledger.enabledmigration.allowAllServicesonboarding ingress targettransaction ingress target
falsefalse (default)midaz-onboardingmidaz-transaction
truefalse (default)midaz-ledgermidaz-ledger
truetruemidaz-onboardingmidaz-transaction

Integração do serviço CRM

O serviço CRM agora está disponível como um componente integrado, movendo-se do namespace midaz-plugins para o namespace midaz.
Para mais detalhes, consulte a Documentação do CRM.
Migração do plugin-crm:
1
Faça o deploy do novo CRM no namespace midaz:
crm:
  enabled: true
  configmap:
    MONGO_HOST: "midaz-mongodb"
    MONGO_NAME: "crm"
2
Migre seus dados do MongoDB antigo para o novo (se estiver usando bancos de dados separados).
3
Atualize seu ingress/DNS para apontar para o novo serviço CRM.
4
Remova o release antigo do plugin-crm do namespace midaz-plugins.

Comando de atualização

helm upgrade midaz oci://registry-1.docker.io/lerianstudio/midaz-helm --version 5.x.x -n midaz

Procedimento de rollback

# Listar histórico de releases
helm history midaz -n midaz

# Rollback para versão anterior
helm rollback midaz <REVISION> -n midaz

# Ou desabilitar explicitamente o ledger
helm upgrade midaz oci://registry-1.docker.io/lerianstudio/midaz-helm \
  --set ledger.enabled=false \
  --set onboarding.enabled=true \
  --set transaction.enabled=true \
  -n midaz

Problemas comuns

Serviço Ledger falha ao iniciar
  • Verifique se todas as variáveis de ambiente e secrets específicos de módulo estão configurados com os novos prefixos (DB_ONBOARDING_*, DB_TRANSACTION_*, etc.).
Ingress não roteando para o Ledger
  • Garanta que ledger.enabled: true e migration.allowAllServices não esteja definido como true.
Secrets faltando após habilitar o Ledger
  • Crie novos secrets com prefixos de módulo:
    • DB_ONBOARDING_PASSWORD em vez de DB_PASSWORD
    • DB_TRANSACTION_PASSWORD em vez de DB_PASSWORD
    • MONGO_ONBOARDING_PASSWORD em vez de MONGO_PASSWORD
    • MONGO_TRANSACTION_PASSWORD em vez de MONGO_PASSWORD

Referência de configuração do serviço Ledger


O serviço Ledger usa configurações de banco de dados específicas por módulo:
ledger:
  enabled: false
  name: "ledger"
  replicaCount: 1

  image:
    repository: lerianstudio/midaz-ledger
    tag: ""  # Defaults to Chart.AppVersion
    pullPolicy: IfNotPresent

  configmap:
    # App Configuration
    ENV_NAME: "production"
    LOG_LEVEL: "debug"
    SERVER_PORT: "3000"
    SERVER_ADDRESS: ":3000"

    # Auth Configuration
    PLUGIN_AUTH_ENABLED: "false"
    PLUGIN_AUTH_HOST: ""

    # Accounting Configuration
    ACCOUNT_TYPE_VALIDATION: ""
    TRANSACTION_ROUTE_VALIDATION: ""

    # PostgreSQL - Onboarding Module
    DB_ONBOARDING_HOST: "midaz-postgresql-primary.midaz.svc.cluster.local."
    DB_ONBOARDING_USER: "midaz"
    DB_ONBOARDING_NAME: "onboarding"
    DB_ONBOARDING_PORT: "5432"
    DB_ONBOARDING_SSLMODE: "disable"
    DB_ONBOARDING_REPLICA_HOST: "midaz-postgresql-replication.midaz.svc.cluster.local."

    # PostgreSQL - Transaction Module
    DB_TRANSACTION_HOST: "midaz-postgresql-primary.midaz.svc.cluster.local."
    DB_TRANSACTION_USER: "midaz"
    DB_TRANSACTION_NAME: "transaction"
    DB_TRANSACTION_PORT: "5432"
    DB_TRANSACTION_SSLMODE: "disable"
    DB_TRANSACTION_REPLICA_HOST: "midaz-postgresql-replication.midaz.svc.cluster.local."

    # MongoDB - Onboarding Module
    MONGO_ONBOARDING_HOST: "midaz-mongodb.midaz.svc.cluster.local."
    MONGO_ONBOARDING_NAME: "onboarding"
    MONGO_ONBOARDING_USER: "midaz"
    MONGO_ONBOARDING_PORT: "27017"

    # MongoDB - Transaction Module
    MONGO_TRANSACTION_HOST: "midaz-mongodb.midaz.svc.cluster.local."
    MONGO_TRANSACTION_NAME: "transaction"
    MONGO_TRANSACTION_USER: "midaz"
    MONGO_TRANSACTION_PORT: "27017"

    # Redis (shared)
    REDIS_HOST: "midaz-valkey-primary.midaz.svc.cluster.local.:6379"

    # RabbitMQ (shared)
    RABBITMQ_HOST: "midaz-rabbitmq.midaz.svc.cluster.local."

    # Balance Sync Worker
    BALANCE_SYNC_WORKER_ENABLED: "false"
    BALANCE_SYNC_MAX_WORKERS: "5"

  secrets:
    # Onboarding Module
    DB_ONBOARDING_PASSWORD: ""
    DB_ONBOARDING_REPLICA_PASSWORD: ""
    MONGO_ONBOARDING_PASSWORD: ""

    # Transaction Module
    DB_TRANSACTION_PASSWORD: ""
    DB_TRANSACTION_REPLICA_PASSWORD: ""
    MONGO_TRANSACTION_PASSWORD: ""

    # Shared
    REDIS_PASSWORD: ""
    RABBITMQ_DEFAULT_PASS: ""
    RABBITMQ_CONSUMER_PASS: ""

Suporte a secrets externos

ledger:
  useExistingSecret: true
  existingSecretName: <existing-secret-name>

Referência de flags de deployment

FlagPadrãoDescrição
ledger.enabledfalseHabilita o serviço Ledger unificado
onboarding.enabledtrueEnables onboarding (desabilitado automaticamente quando ledger está habilitado)
transaction.enabledtrueEnables transaction (desabilitado automaticamente quando ledger está habilitado)
migration.allowAllServicesfalseFlag oculta para permitir todos os serviços simultaneamente

Recomendação para produção


Não recomendamos usar as dependências padrão do Helm chart do Midaz (bancos de dados, cache e message broker) em ambientes de produção. Para deployments de nível produtivo, siga nossas boas práticas para operar essas dependências com segurança adequada, observabilidade, backups, recuperação de desastres e SLOs.

Verificação pós-atualização


1. Verificar status dos pods

kubectl get pods -n midaz
Todos os pods devem estar Running e READY.

2. Verificar serviços

kubectl get svc -n midaz

3. Verificar os logs

# Se estiver usando o serviço Ledger (v5.x)
kubectl logs -n midaz deployment/midaz-ledger

# Se estiver usando serviços legado
kubectl logs -n midaz deployment/midaz-onboarding
kubectl logs -n midaz deployment/midaz-transaction

# Verificar logs do RabbitMQ (importante para atualizações v4.x+)
kubectl logs -n midaz statefulset/midaz-rabbitmq

# Verificar logs do CRM (se habilitado)
kubectl logs -n midaz deployment/midaz-crm

4. Verificar roteamento de ingress (v5.x com Ledger)

kubectl get ingress -n midaz
kubectl describe ingress midaz-onboarding -n midaz
kubectl describe ingress midaz-transaction -n midaz

Procedimento geral de rollback


Se encontrar problemas após qualquer atualização:
# Listar histórico de releases
helm history midaz -n midaz

# Rollback para versão anterior
helm rollback midaz <REVISION> -n midaz

# Verificar rollback
helm list -n midaz
kubectl get pods -n midaz