Pular para o conteúdo principal
Este guia orienta você na instalação e configuração de um ambiente Midaz no Kubernetes usando Helm. Você encontrará instruções sobre como configurar Ingress controllers, habilitar observabilidade e gerenciar dependências.
Este guia cobre o Helm chart do Midaz v5.x. Para atualizar a partir de versões anteriores, veja Atualizando o Helm.

Fazendo o deploy do Midaz com Helm


Pré-requisitos

Antes de fazer o deploy do Midaz com Helm, certifique-se de ter:
  • Kubernetes (v1.30+) – Cluster em execução.
  • Helm 3+ – Instalado e disponível (helm version).
  • Acesso a um registro de containers com as imagens do Midaz.
  • Certificados DNS e TLS para ingress (ou cert-manager instalado).
O código-fonte deste Helm chart está disponível em:A instalação padrão corresponde à fornecida no Guia de instalação rápida do Midaz.
Quer entender melhor a arquitetura? Confira a Visão geral da arquitetura do Midaz.

Instalar o Midaz via Helm Chart

Para instalar o Midaz usando Helm, execute o seguinte comando:
helm install midaz oci://registry-1.docker.io/lerianstudio/midaz-helm --version <version> -n midaz --create-namespace
Substitua <version> pela versão desejada do Helm chart. Você pode verificar as versões disponíveis executando:
helm search repo oci://registry-1.docker.io/lerianstudio/midaz-helm --versions
Isso cria um namespace chamado midaz (se ainda não existir) e faz o deploy do chart. Para confirmar que o deploy foi realizado, execute:
helm list -n midaz
O Helm chart está no nosso repositório GitHub. Você pode fazer fork, personalizar valores ou estender conforme necessário.

Configurando o ingress


O Ingress permite expor os serviços do Midaz fora do cluster Kubernetes, vinculando-os a domínios específicos e certificados TLS. Você pode habilitar o ingress individualmente para cada serviço do Midaz. Para usar o ingress, você precisará de um ingress controller em execução no seu cluster (ex.: NGINX, AWS ALB ou Traefik) e entradas DNS apontando para ele.
Você pode habilitar o ingress por serviço no seu arquivo values.yaml e configurar hostnames, secrets TLS e quaisquer annotations específicas do controller.
As seções a seguir fornecem exemplos de configuração para os ingress controllers mais comuns.

NGINX ingress controller

Para usar o NGINX Ingress Controller, configure o values.yaml da seguinte forma:
ingress:
  enabled: true
  className: "nginx"
  # The `annotations` field is used to add custom metadata to the Nginx resource.
  # Annotations are key-value pairs that can be used to attach arbitrary non-identifying metadata to objects.
  # These annotations can be used by various tools and libraries to augment the behavior of the Nginx resource.
  # See more https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md
  annotations: {}
  hosts:
    - host: midaz.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: midaz-tls  # Ensure this secret exists or is managed by cert-manager
      hosts:
        - midaz.example.com
Confira a documentação oficial do ingress-nginx para uma referência completa sobre annotations do Nginx.

AWS ALB (Application Load Balancer)

Para o AWS ALB Ingress Controller, configure o values.yaml da seguinte forma:
ingress:
  enabled: true
  className: "alb"
  annotations:
    alb.ingress.kubernetes.io/scheme: internal  # Use "internet-facing" for public ALB
    alb.ingress.kubernetes.io/target-type: ip   # Use "instance" if targeting EC2 instances
    alb.ingress.kubernetes.io/group.name: "midaz"  # Group ALB resources under this name
    alb.ingress.kubernetes.io/healthcheck-path: "/healthz"  # Health check path
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'  # Listen on HTTP and HTTPS
  hosts:
    - host: midaz.example.com
      paths:
        - path: /
          pathType: Prefix
  tls: []  # TLS is managed by the ALB using ACM certificates

Traefik Ingress Controller

Para o Traefik, configure o values.yaml da seguinte forma:
ingress:
  enabled: true
  className: "traefik"
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: "web, websecure"  # Entrypoints defined in Traefik
    traefik.ingress.kubernetes.io/router.tls: "true"  # Enable TLS for this route
  hosts:
    - host: midaz.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: midaz-tls  # Ensure this secret exists and contains the TLS certificate
      hosts:
        - midaz.example.com

Configurando a observabilidade


O Midaz usa o Grafana Docker OpenTelemetry LGTM para coletar e visualizar dados de telemetria como traces e métricas. Você pode acessar o dashboard do Grafana usando uma de duas opções:

Opção 1: Acesso local

Para acessar o dashboard localmente, execute:
kubectl port-forward svc/midaz-grafana 3000:3000 -n midaz
Depois acesse http://localhost:3000 para abrir o dashboard.

Opção 2: Acesso via Ingress

Para expor o Grafana dentro do seu cluster ou rede privada via DNS, habilite e configure o Ingress assim:
grafana:
  enabled: true
  name: grafana
  ingress:
    enabled: true
    className: "nginx"
    annotations:
      nginx.ingress.kubernetes.io/rewrite-target: /
    hosts:
      - host: "midaz-otel.example.com"
        paths:
          - path: /
            pathType: Prefix
    tls: []

Desabilitando a observabilidade

Você pode desabilitar toda a stack de observabilidade configurando:
grafana:
  enabled: false

OpenTelemetry Collector (Lerian)

O OpenTelemetry Collector é usado para coletar e exportar dados de telemetria dos componentes do Midaz. Por padrão, ele está desabilitado. Para habilitá-lo:
otel-collector-lerian:
  enabled: true

Configurando dependências


O Helm Chart do Midaz possui as seguintes dependências para a instalação padrão do projeto. Todas as dependências são habilitadas por padrão.
Os exemplos abaixo mostram configurações tanto para o Ledger (recomendado) quanto para os serviços Onboarding/Transaction (legado). Escolha a configuração que corresponde ao seu deployment.

Valkey

  • Versão: 2.4.7
  • Repositório: Bitnami
  • Desabilitar: valkey.enabled = false
Se você tem uma instância existente de Valkey ou Redis, pode desabilitar essa dependência e configurar os componentes do Midaz para usar sua instância externa.
ledger:
  configmap:
    REDIS_HOST: {your-host}:{your-host-port}
  secrets:
    REDIS_PASSWORD: {your-host-pass}

PostgreSQL

  • Versão: 16.3.0
  • Repositório: Bitnami
  • Desabilitar: postgresql.enabled = false
Se você tem uma instância existente de PostgreSQL, pode desabilitar essa dependência e configurar os componentes do Midaz para usar seu PostgreSQL externo.
ledger:
  configmap:
    # Onboarding module database
    DB_ONBOARDING_HOST: {your-host}
    DB_ONBOARDING_USER: {your-host-user}
    DB_ONBOARDING_PORT: {your-host-port}
    DB_ONBOARDING_REPLICA_HOST: {your-replication-host}
    DB_ONBOARDING_REPLICA_USER: {your-replication-host-user}
    DB_ONBOARDING_REPLICA_PORT: {your-replication-host-port}
    # Transaction module database
    DB_TRANSACTION_HOST: {your-host}
    DB_TRANSACTION_USER: {your-host-user}
    DB_TRANSACTION_PORT: {your-host-port}
    DB_TRANSACTION_REPLICA_HOST: {your-replication-host}
    DB_TRANSACTION_REPLICA_USER: {your-replication-host-user}
    DB_TRANSACTION_REPLICA_PORT: {your-replication-host-port}
  secrets:
    DB_ONBOARDING_PASSWORD: {your-host-pass}
    DB_ONBOARDING_REPLICA_PASSWORD: {your-replication-host-pass}
    DB_TRANSACTION_PASSWORD: {your-host-pass}
    DB_TRANSACTION_REPLICA_PASSWORD: {your-replication-host-pass}

Job de Bootstrap para PostgreSQL Externo

Ao usar um PostgreSQL externo (postgresql.enabled: false), este chart fornece um Job de bootstrap único que:
  • Cria os bancos de dados onboarding e transaction se não existirem.
  • Cria o role/usuário midaz se não existir e define sua senha.
  • Concede privilégios de banco de dados e permissões no schema public para que o midaz possa criar tabelas.
  • Aguarda conectividade com timeout de 300s.
  • É idempotente: se tudo já existir, apenas imprime e encerra.
Configure no values.yaml:
postgresql:
  enabled: false  # disable bundled PostgreSQL to use an external one

global:
  externalPostgresDefinitions:
    enabled: true
    connection:
      host: "your-postgres-host"
      port: "5432"
    postgresAdminLogin:
      # Option A: Use an existing Secret (recommended)
      # Required keys: DB_USER_ADMIN, DB_ADMIN_PASSWORD
      useExistingSecret:
        name: "my-postgres-admin-secret"
      # Option B: Inline credentials (not recommended in production)
      # username: "postgres"
      # password: "s3cret"
    midazCredentials:
      # Option A: Use an existing Secret (recommended)
      # Required key: DB_PASSWORD_MIDAZ
      useExistingSecret:
        name: "my-midaz-credentials-secret"
      # Option B: Inline password (not recommended in production)
      # password: "midaz-password"
Todos os secrets devem estar no mesmo namespace que o release. O Job tem um TTL de 300 segundos após a conclusão.

MongoDB

  • Versão: 15.4.5
  • Repositório: Bitnami
  • Desabilitar: mongodb.enabled = false
Se você tem uma instância existente de MongoDB, pode desabilitar essa dependência e configurar os componentes do Midaz para usar seu MongoDB externo.
ledger:
  configmap:
    # Onboarding module
    MONGO_ONBOARDING_HOST: {your-host}
    MONGO_ONBOARDING_NAME: {your-host-name}
    MONGO_ONBOARDING_USER: {your-host-user}
    MONGO_ONBOARDING_PORT: {your-host-port}
    # Transaction module
    MONGO_TRANSACTION_HOST: {your-host}
    MONGO_TRANSACTION_NAME: {your-host-name}
    MONGO_TRANSACTION_USER: {your-host-user}
    MONGO_TRANSACTION_PORT: {your-host-port}
  secrets:
    MONGO_ONBOARDING_PASSWORD: {your-host-pass}
    MONGO_TRANSACTION_PASSWORD: {your-host-pass}

RabbitMQ

  • Versão: 16.0.0
  • Repositório: Groundhog2k
  • Desabilitar: rabbitmq.enabled = false
Se você está usando uma instância externa de RabbitMQ, você precisa carregar o arquivo load_definitions.json necessário. Sem essas filas, exchanges e bindings configurados, o Midaz não funcionará como esperado. Você pode carregar as definições de duas formas: Automaticamente Habilite o job de bootstrap no seu values.yaml para aplicar automaticamente as definições do RabbitMQ na sua instância externa:
global:
  externalRabbitmqDefinitions:
    enabled: true
Manualmente Se preferir aplicar as definições manualmente, use a API HTTP do RabbitMQ:
curl -u {user}:{pass} -X POST -H "Content-Type: application/json" \
  -d @load_definitions.json http://{host}:{port}/api/definitions
O arquivo load_definitions.json está localizado em: charts/midaz/files/rabbitmq/load_definitions.json.

Job de Bootstrap para RabbitMQ Externo

Para simplificar a configuração de um RabbitMQ externo, este chart fornece um Job único que:
  • Aplica o arquivo de definições padrão via API HTTP.
  • Cria/atualiza os usuários transaction e consumer com senhas customizadas.
  • Aguarda conectividade AMQP com timeout de 300s.
  • É idempotente: se os usuários já existirem, pula e encerra.
Configure no values.yaml:
rabbitmq:
  enabled: false  # disable bundled RabbitMQ to use an external one

global:
  externalRabbitmqDefinitions:
    enabled: true
    connection:
      protocol: "http"          # http or https
      host: "your-rabbitmq-host"
      port: "15672"             # HTTP management port
      portAmqp: "5672"          # AMQP port (for connectivity check)
    rabbitmqAdminLogin:
      # Option A: Use an existing Secret (recommended)
      # Required keys: RABBITMQ_ADMIN_USER, RABBITMQ_ADMIN_PASS
      useExistingSecret:
        name: "my-rabbitmq-admin-secret"
      # Option B: Inline credentials (not recommended in production)
      # username: "admin"
      # password: "s3cret"
    appCredentials:
      # Option A: Use an existing Secret (recommended)
      # Required keys: RABBITMQ_DEFAULT_PASS, RABBITMQ_CONSUMER_PASS
      useExistingSecret:
        name: "my-rabbitmq-app-credentials"
      # Option B: Inline passwords (not recommended in production)
      # transactionPassword: "transaction-pass"
      # consumerPassword: "consumer-pass"
Todos os secrets devem estar no mesmo namespace que o release. O Job tem um TTL de 300 segundos após a conclusão. Usuários criados: midaz (admin), transaction, consumer.

RabbitMQ com TLS/SSL

Se o seu servidor RabbitMQ requer TLS/SSL, atualize as variáveis de ambiente do cliente para usar protocolos seguros:
ledger:
  configmap:
    RABBITMQ_URI: "amqps"      # was "amqp"
    RABBITMQ_PROTOCOL: "https" # was "http"

Use seu próprio RabbitMQ

Se você já tem uma instância de RabbitMQ em execução, pode desabilitar a dependência integrada e apontar os componentes do Midaz para sua configuração externa.
ledger:
  configmap:
    RABBITMQ_HOST: {your-host}
    RABBITMQ_DEFAULT_USER: {your-host-user}
    RABBITMQ_PORT_HOST: {your-host-port}
    RABBITMQ_PORT_AMQP: {your-host-amqp-port}
  secrets:
    RABBITMQ_DEFAULT_PASS: {your-host-pass}
    RABBITMQ_CONSUMER_PASS: {your-rabbitmq-consumer-password}

Componentes do Midaz


O Helm chart do Midaz faz o deploy dos servicos core que lidam com operacoes de ledger, gerenciamento de contas e processamento de transacoes.
Recomendado para novas instalacoes: Use o servico unificado Ledger. Os servicos separados Onboarding e Transaction ainda sao suportados, mas se tornarao legado em um release futuro.
ParâmetroDescriçãoValor Padrão
ledger.enabledHabilita ou desabilita the ledger service.false
ledger.nameNome do serviço."ledger"
ledger.replicaCountNúmero de réplicas para o serviço ledger service.1
ledger.image.repositoryRepositório da imagem de container do serviço ledger service ."lerianstudio/midaz-ledger"
ledger.image.pullPolicyPolítica de pull da imagem."IfNotPresent"
ledger.image.tagTag da imagem usada para o deployment."" (defaults to Chart.AppVersion)
ledger.imagePullSecretsSecrets para pull de imagens de um registro privado.[]
ledger.nameOverrideSobrescreve o nome padrão gerado pelo Helm.""
ledger.fullnameOverrideSobrescreve o nome completo gerado pelo Helm.""
ledger.podAnnotationsAnnotations do pod para metadados adicionais.{}
ledger.podSecurityContextContexto de segurança aplicado no nível do pod.{}
ledger.securityContext.*Define configurações de contexto de segurança para o container.See values.yaml
ledger.pdb.enabledEspecifica se o PodDisruptionBudget está habilitado.true
ledger.pdb.minAvailableNúmero mínimo de pods disponíveis.1
ledger.pdb.maxUnavailableNúmero máximo de pods indisponíveis.1
ledger.pdb.annotationsAnnotations para o PodDisruptionBudget.{}
ledger.deploymentUpdate.*Estratégia de atualização do deployment.See values.yaml
ledger.service.typeTipo de serviço Kubernetes."ClusterIP"
ledger.service.portPorta para a API HTTP.3000
ledger.service.annotationsAnnotations para o serviço.{}
ledger.ingress.enabledEspecifica se o Ingress está habilitado.false
ledger.ingress.classNameNome da classe do Ingress.""
ledger.ingress.annotationsAnnotations adicionais do ingress.{}
ledger.ingress.hostsHosts configurados para Ingress e paths associados.[]
ledger.ingress.tlsConfigurações TLS para Ingress.[]
ledger.resources.*Requests/limits de recursos CPU/Memória.See values.yaml
ledger.autoscaling.enabledEspecifica se o autoscaling está habilitado.true
ledger.autoscaling.minReplicasNúmero mínimo de réplicas para autoscaling.2
ledger.autoscaling.maxReplicasNúmero máximo de réplicas para autoscaling.5
ledger.autoscaling.targetCPUUtilizationPercentagePercentual alvo de utilização de CPU para autoscaling.80
ledger.autoscaling.targetMemoryUtilizationPercentagePercentual alvo de utilização de memória para autoscaling.80
ledger.nodeSelectorSeletores de node para agendamento de pods.{}
ledger.tolerationsTolerations para agendamento de pods.{}
ledger.affinityRegras de afinidade para agendamento de pods.{}
ledger.configmap.*Variáveis de ambiente para o serviço.See values.yaml
ledger.secrets.*Secrets para o serviço.See values.yaml
ledger.useExistingSecretUsar um secret existente em vez de criar um novo.false
ledger.existingSecretNameNome do secret existente a ser usado.""
ledger.extraEnvVarsLista de variáveis de ambiente extras.[]
ledger.serviceAccount.createEspecifica se a service account deve ser criada.true
ledger.serviceAccount.annotationsAnnotations para a service account.{}
ledger.serviceAccount.nameNome da service account. Se não definido, será gerado automaticamente.""

Criando o secret do Ledger manualmente

Se você deseja usar um Kubernetes Secret existente para o serviço ledger, pode criá-lo manualmente:
kubectl create secret generic midaz-ledger \
  --from-literal=DB_ONBOARDING_PASSWORD='<your-db-onboarding-password>' \
  --from-literal=DB_ONBOARDING_REPLICA_PASSWORD='<your-db-onboarding-replica-password>' \
  --from-literal=MONGO_ONBOARDING_PASSWORD='<your-mongo-onboarding-password>' \
  --from-literal=DB_TRANSACTION_PASSWORD='<your-db-transaction-password>' \
  --from-literal=DB_TRANSACTION_REPLICA_PASSWORD='<your-db-transaction-replica-password>' \
  --from-literal=MONGO_TRANSACTION_PASSWORD='<your-mongo-transaction-password>' \
  --from-literal=REDIS_PASSWORD='<your-redis-password>' \
  --from-literal=RABBITMQ_DEFAULT_PASS='<your-rabbitmq-password>' \
  --from-literal=RABBITMQ_CONSUMER_PASS='<your-rabbitmq-consumer-password>' \
  -n midaz
O serviço ledger usa credenciais de banco de dados específicas por módulo (onboarding e transaction), pois combina ambos os módulos.
Depois configure o serviço ledger para usar este secret existente:
ledger:
  enabled: true
  useExistingSecret: true
  existingSecretName: "midaz-ledger"

Onboarding (legado)

O serviço Onboarding ainda é suportado, mas se tornará legado em um release futuro. Recomendamos usar o serviço unificado Ledger para novas instalações.
ParâmetroDescriçãoValor Padrão
onboarding.nameNome do serviço."onboarding"
onboarding.replicaCountNúmero de réplicas para o serviço onboarding service.2
onboarding.image.repositoryRepositório da imagem de container do serviço onboarding service ."lerianstudio/midaz-onboarding"
onboarding.image.pullPolicyPolítica de pull da imagem."IfNotPresent"
onboarding.image.tagTag da imagem usada para o deployment."3.3.4"
onboarding.imagePullSecretsSecrets para pull de imagens de um registro privado.[]
onboarding.nameOverrideSobrescreve o nome padrão gerado pelo Helm.""
onboarding.fullnameOverrideSobrescreve o nome completo gerado pelo Helm.""
onboarding.podAnnotationsAnnotations do pod para metadados adicionais.{}
onboarding.podSecurityContextContexto de segurança aplicado no nível do pod.{}
onboarding.securityContext.*Define configurações de contexto de segurança para o container.See values.yaml
onboarding.pdb.enabledEspecifica se o PodDisruptionBudget está habilitado.true
onboarding.pdb.minAvailableNúmero mínimo de pods disponíveis.1
onboarding.pdb.maxUnavailableNúmero máximo de pods indisponíveis.1
onboarding.pdb.annotationsAnnotations para o PodDisruptionBudget.{}
onboarding.deploymentUpdate.*Estratégia de atualização do deployment.See values.yaml
onboarding.service.typeTipo de serviço Kubernetes."ClusterIP"
onboarding.service.portPorta para a API HTTP.3000
onboarding.service.annotationsAnnotations para o serviço.{}
onboarding.ingress.enabledEspecifica se o Ingress está habilitado.false
onboarding.ingress.classNameNome da classe do Ingress.""
onboarding.ingress.annotationsAnnotations adicionais do ingress.{}
onboarding.ingress.hostsHosts configurados para Ingress e paths associados.""
onboarding.ingress.tlsConfigurações TLS para Ingress.[]
onboarding.resources.*Requests/limits de recursos CPU/Memória.See values.yaml
onboarding.autoscaling.enabledEspecifica se o autoscaling está habilitado.true
onboarding.autoscaling.minReplicasNúmero mínimo de réplicas para autoscaling.2
onboarding.autoscaling.maxReplicasNúmero máximo de réplicas para autoscaling.5
onboarding.autoscaling.targetCPUUtilizationPercentagePercentual alvo de utilização de CPU para autoscaling.80
onboarding.autoscaling.targetMemoryUtilizationPercentagePercentual alvo de utilização de memória para autoscaling.80
onboarding.nodeSelectorSeletores de node para agendamento de pods.{}
onboarding.tolerationsTolerations para agendamento de pods.{}
onboarding.affinityRegras de afinidade para agendamento de pods.{}
onboarding.configmap.*Variáveis de ambiente para o serviço.See values.yaml
onboarding.secrets.*Secrets para o serviço.See values.yaml
onboarding.useExistingSecretUsar um secret existente em vez de criar um novo.false
onboarding.existingSecretNameNome do secret existente a ser usado.""
onboarding.extraEnvVarsLista de variáveis de ambiente extras.[]
onboarding.serviceAccount.createEspecifica se a service account deve ser criada.true
onboarding.serviceAccount.annotationsAnnotations para a service account.{}
onboarding.serviceAccount.nameNome da service account. Se não definido, será gerado automaticamente.""

Criando o secret do Onboarding manualmente

Se você deseja usar um Kubernetes Secret existente para o serviço onboarding:
kubectl create secret generic midaz-onboarding \
  --from-literal=MONGO_PASSWORD='<your-mongo-password>' \
  --from-literal=DB_PASSWORD='<your-db-password>' \
  --from-literal=DB_REPLICA_PASSWORD='<your-db-replica-password>' \
  --from-literal=RABBITMQ_DEFAULT_PASS='<your-rabbitmq-password>' \
  --from-literal=REDIS_PASSWORD='<your-redis-password>' \
  -n midaz
Depois configure o serviço onboarding para usar este secret existente:
onboarding:
  useExistingSecret: true
  existingSecretName: "midaz-onboarding"

Transaction (legado)

O serviço Transaction ainda é suportado, mas se tornará legado em um release futuro. Recomendamos usar o serviço unificado Ledger para novas instalações.
ParâmetroDescriçãoValor Padrão
transaction.nameNome do serviço."transaction"
transaction.replicaCountNúmero de réplicas para o serviço transaction service.1
transaction.image.repositoryRepositório da imagem de container do serviço transaction service ."lerianstudio/midaz-transaction"
transaction.image.pullPolicyPolítica de pull da imagem."IfNotPresent"
transaction.image.tagTag da imagem usada para o deployment."3.3.4"
transaction.imagePullSecretsSecrets para pull de imagens de um registro privado.[]
transaction.nameOverrideSobrescreve o nome padrão gerado pelo Helm.""
transaction.fullnameOverrideSobrescreve o nome completo gerado pelo Helm.""
transaction.podAnnotationsAnnotations do pod para metadados adicionais.{}
transaction.podSecurityContextContexto de segurança para o pod.{}
transaction.securityContext.*Define configurações de contexto de segurança para o container.See values.yaml
transaction.pdb.enabledHabilita ou desabilita PodDisruptionBudget.true
transaction.pdb.minAvailableNúmero mínimo de pods disponíveis.2
transaction.pdb.maxUnavailableNúmero máximo de pods indisponíveis.1
transaction.pdb.annotationsAnnotations para o PodDisruptionBudget.{}
transaction.deploymentUpdate.*Estratégia de atualização do deployment.See values.yaml
transaction.service.typeTipo de serviço Kubernetes."ClusterIP"
transaction.service.portPorta para a API HTTP.3001
transaction.service.annotationsAnnotations para o serviço.{}
transaction.ingress.enabledHabilita ou desabilita ingress.false
transaction.ingress.classNameNome da classe do Ingress.""
transaction.ingress.annotationsAnnotations adicionais do ingress.{}
transaction.ingress.hostsHosts configurados para ingress e paths associados.[]
transaction.ingress.tlsConfiguração TLS para ingress.[]
transaction.resources.*Requests/limits de recursos CPU/Memória.See values.yaml
transaction.autoscaling.enabledHabilita ou desabilita horizontal pod autoscaling.true
transaction.autoscaling.minReplicasNúmero mínimo de réplicas para autoscaling.1
transaction.autoscaling.maxReplicasNúmero máximo de réplicas para autoscaling.5
transaction.autoscaling.targetCPUUtilizationPercentagePercentual alvo de utilização de CPU para autoscaling.80
transaction.autoscaling.targetMemoryUtilizationPercentagePercentual alvo de utilização de memória para autoscaling.80
transaction.nodeSelectorSeletor de node para agendamento de pods em nodes específicos.{}
transaction.tolerationsTolerations para agendamento em nodes com taints.{}
transaction.affinityRegras de afinidade para agendamento de pods.{}
transaction.configmap.*Variáveis de ambiente para o serviço.See values.yaml
transaction.secrets.*Secrets para o serviço.See values.yaml
transaction.useExistingSecretUsar um secret existente em vez de criar um novo.false
transaction.existingSecretNameNome do secret existente a ser usado.""
transaction.extraEnvVarsLista de variáveis de ambiente extras.[]
transaction.serviceAccount.createEspecifica se uma ServiceAccount deve ser criada.true
transaction.serviceAccount.annotationsAnnotations para a ServiceAccount.{}
transaction.serviceAccount.nameNome da service account.""

Criando o secret do Transaction manualmente

Se você deseja usar um Kubernetes Secret existente para o serviço transaction:
kubectl create secret generic midaz-transaction \
  --from-literal=MONGO_PASSWORD='<your-mongo-password>' \
  --from-literal=DB_PASSWORD='<your-db-password>' \
  --from-literal=DB_REPLICA_PASSWORD='<your-db-replica-password>' \
  --from-literal=RABBITMQ_DEFAULT_PASS='<your-rabbitmq-password>' \
  --from-literal=RABBITMQ_CONSUMER_PASS='<your-rabbitmq-consumer-password>' \
  --from-literal=REDIS_PASSWORD='<your-redis-password>' \
  -n midaz
O serviço transaction requer uma chave de secret adicional RABBITMQ_CONSUMER_PASS em comparação ao onboarding.
Depois configure o serviço transaction para usar este secret existente:
transaction:
  useExistingSecret: true
  existingSecretName: "midaz-transaction"

CRM (Customer Relationship Management)

O serviço crm fornece APIs para gerenciar dados de holders e seus relacionamentos com contas do ledger. Anteriormente disponível como um chart separado (plugin-crm) implantado no namespace midaz-plugins, o CRM agora está integrado ao Helm chart principal do Midaz e é implantado no namespace midaz.
Se você está atualmente usando o plugin-crm no namespace midaz-plugins, recomendamos migrar para este novo workload integrado de CRM. Veja o guia Atualizando o Helm para os passos de migração.
Para mais detalhes sobre a funcionalidade do CRM, consulte a Documentação do CRM.
Habilitando o serviço CRM:
crm:
  enabled: true
  configmap:
    MONGO_HOST: "midaz-mongodb"  # Use your MongoDB host
    MONGO_NAME: "crm"
    MONGO_USER: "midaz"
  secrets:
    MONGO_PASSWORD: "lerian"
ParâmetroDescriçãoValor Padrão
crm.enabledHabilita ou desabilita the CRM service.false
crm.nameNome do serviço."crm"
crm.replicaCountNúmero de réplicas para o serviço CRM service.1
crm.image.repositoryRepositório da imagem de container do serviço CRM service ."ghcr.io/lerianstudio/midaz-crm"
crm.image.pullPolicyPolítica de pull da imagem."Always"
crm.image.tagTag da imagem usada para o deployment."3.5.0"
crm.imagePullSecretsSecrets para pull de imagens de um registro privado.[]
crm.nameOverrideSobrescreve o nome padrão gerado pelo Helm.""
crm.fullnameOverrideSobrescreve o nome completo gerado pelo Helm.""
crm.podAnnotationsAnnotations do pod para metadados adicionais.{}
crm.podSecurityContextContexto de segurança aplicado no nível do pod.{}
crm.securityContext.*Define configurações de contexto de segurança para o container.See values.yaml
crm.pdb.enabledEspecifica se o PodDisruptionBudget está habilitado.true
crm.pdb.minAvailableNúmero mínimo de pods disponíveis.1
crm.pdb.maxUnavailableNúmero máximo de pods indisponíveis.1
crm.pdb.annotationsAnnotations para o PodDisruptionBudget.{}
crm.deploymentUpdate.typeTipo de estratégia de deployment."RollingUpdate"
crm.deploymentUpdate.maxSurgeNúmero máximo de pods que podem ser criados acima do número desejado.1
crm.deploymentUpdate.maxUnavailableNúmero máximo de pods que podem estar indisponíveis durante a atualização.1
crm.service.typeTipo de serviço Kubernetes."ClusterIP"
crm.service.portPorta do serviço.4003
crm.ingress.enabledEspecifica se o Ingress está habilitado.false
crm.ingress.classNameNome da classe do Ingress.""
crm.ingress.annotationsAnnotations adicionais do ingress.{}
crm.ingress.hostsHosts configurados para Ingress e paths associados.[]
crm.ingress.tlsConfigurações TLS para Ingress.[]
crm.resources.*Requests/limits de recursos CPU/Memória.See values.yaml
crm.autoscaling.enabledEspecifica se o autoscaling está habilitado.true
crm.autoscaling.minReplicasNúmero mínimo de réplicas para autoscaling.1
crm.autoscaling.maxReplicasNúmero máximo de réplicas para autoscaling.3
crm.autoscaling.targetCPUUtilizationPercentagePercentual alvo de utilização de CPU para autoscaling.80
crm.autoscaling.targetMemoryUtilizationPercentagePercentual alvo de utilização de memória para autoscaling.80
crm.nodeSelectorSeletores de node para agendamento de pods.{}
crm.tolerationsTolerations para agendamento de pods.{}
crm.affinityRegras de afinidade para agendamento de pods.{}
crm.configmap.*Variáveis de ambiente para o serviço.See values.yaml
crm.secrets.*Secrets para o serviço.See values.yaml
crm.useExistingSecretUsar um secret existente em vez de criar um novo.false
crm.existingSecretNameNome do secret existente a ser usado.""
crm.extraEnvVarsLista de variáveis de ambiente extras.{}

Criando o secret do CRM manualmente

Se você deseja usar um Kubernetes Secret existente para o serviço CRM:
kubectl create secret generic midaz-crm \
  --from-literal=LCRYPTO_HASH_SECRET_KEY='<your-hash-secret-key>' \
  --from-literal=LCRYPTO_ENCRYPT_SECRET_KEY='<your-encrypt-secret-key>' \
  --from-literal=MONGO_PASSWORD='<your-mongo-password>' \
  -n midaz
Depois configure o serviço CRM para usar este secret existente:
crm:
  enabled: true
  useExistingSecret: true
  existingSecretName: "midaz-crm"