Antes de começar
Confirme que você tem estes itens:
- Um cluster Kubernetes e o Helm.
- Um banco de dados PostgreSQL para o Courier.
- O endereço do seu Access Manager.
- A sua chave de licença da Lerian e o ID da organização.
- As configurações do canal SPB que a JD deu à sua instituição.
Os quatro papéis
Um binário carrega os quatro papéis. A variável
COURIER_ROLES seleciona os papéis de um processo. Ela não tem padrão: um processo sem ela não inicia. O chart a define para cada deploy, e ele recusa um valor em config.
Rode
spb-consumer como exatamente uma réplica. Uma leitura da fila da JD remove a mensagem, então o consumidor é um escritor único. O chart se recusa a renderizar mais de uma réplica. Um processo que combina spb-consumer com outro papel para no boot com o código JDC-0314.
Portas
O chart deriva as duas variáveis de
ports.http e ports.soap. Cada papel responde aos probes na porta HTTP: /health para liveness, /readyz para readiness e /version para o build.
Instalar com Helm
O chart é
oci://ghcr.io/lerianstudio/br-jd-courier-helm. Leia as versões dele antes de fixar uma:
-
Crie o Secret que cada papel lê. O chart não o cria.
Coloque
LICENSE_KEY,POSTGRES_PASSWORD,DATABASE_URLe, no modo single-tenant,JD_PASSWORDem um Secret do Kubernetes que você cria. O chart recusa essas chaves nos valores deconfig. -
Escreva o seu arquivo de valores. Coloque as variáveis que não são secretas em
config. O chart as coloca em um ConfigMap que cada papel lê. -
Instale o chart:
Variáveis de ambiente
Esta seção lista as variáveis do Courier. Para as variáveis de banco de dados, multi-tenant, telemetria e autenticação que cada serviço da Lerian compartilha, veja Essenciais de configuração BYOC.
Nas tabelas abaixo, a coluna Padrão / Obrigatória mostra o valor padrão. Obrigatória marca as variáveis que você deve definir.
— significa sem padrão. 🔒 marca um segredo.Serviço
Canal SPB da JD
Os dois papéis SPB leem estas variáveis.JD_LEGACY_CODE, JD_USER_CODE e JD_PASSWORD são as credenciais JD que você já tem (até 10, 10 e 20 caracteres). Em produção, use https em JD_BASE_URL.
Interface SOAP
O papelspb-sender lê estas variáveis.
Em produção, dê ao
spb-sender um certificado e uma chave TLS (SOAP_TLS_CERT_FILE, SOAP_TLS_KEY_FILE), ou defina SOAP_TLS_TERMINATED_UPSTREAM quando o TLS termina antes do Courier. A versão mínima do TLS é 1.2.
Pix
PIX_VENDOR_SUBJECTS lista as identidades da JD que podem chamar o pix-ingress. O Courier recusa todos os outros chamadores, inclusive os motores.
O Courier lê o client ID e o secret de cada motor no AWS Secrets Manager, em AWS_REGION. Guarde-os lá antes de registrar o motor. Sem acesso ao AWS Secrets Manager, o Courier mantém as mensagens Pix do motor e não as entrega.
Guarde o secret de cada motor em tenants/{ENVIRONMENT_NAME}/{tenantId}/jd-courier/external/pix-engine-{engineId}/credentials/versions/{versionId}. pixDelivery.credentialRef deve apontar para esse secret. O Courier não entrega ao motor quando a referência aponta para qualquer outro caminho. O secret é um objeto JSON com os campos clientId e clientSecret. {versionId} é um UUID em minúsculas. No modo single-tenant, {tenantId} é o ID do tenant do canal Pix ativo do Courier.
Licença
Comportamento da licença
O Courier verifica a licença no boot. Não reinicie um pod enquanto a licença não for válida: o pod não inicia até você corrigir a licença. Enquanto o processo roda, o Courier verifica a licença de novo a cada 6 horas. Quando a licença fica revogada, o processo continua no ar:
- A API do operador e a API dos motores respondem
503 JDC-0902. - O endereço Pix e a interface SOAP respondem
503. - O papel
spb-consumerpara de ler da JD.
/readyz informa o estado da licença. Enquanto a licença está revogada, o Courier a verifica de novo depois de 1 minuto, e o intervalo dobra até 15 minutos. Na primeira resposta válida, o Courier volta a servir sem reinício.
Modo multi-tenant
O modo multi-tenant permite que um deploy do Courier atenda mais de um cliente. A Lerian Cloud roda o Courier nesse modo, e a Lerian opera o deploy. As outras seções desta página descrevem um deploy single-tenant.
MULTI_TENANT_ENABLED=true liga o modo. Para as outras variáveis MULTI_TENANT_*, veja Essenciais de configuração BYOC e Multi-tenancy.
No modo multi-tenant, a API do operador, a API dos motores e o Pix ingress obtêm o tenant do token verificado de quem chama. O endereço SOAP obtém o tenant da credencial de canal.
O que muda em relação ao single-tenant
- O papel
spb-consumercontinua rodando como exatamente uma réplica. Ele lê da JD para cada tenant que tem um canal SPB ativo. - O papel
spb-consumerlê a lista de tenants de novo a cada 30 segundos (SPB_TENANT_REFRESH_SEC). Quando o banco de dados de um tenant não responde, o papel pula esse tenant nessa passada. Os outros tenants continuam. - A conciliação roda um ciclo para cada tenant e trilho.
- O papel
pix-ingressexigeSYSTEMPLANE_ENABLED=true. Sem ela, o processo não inicia. - O chart não roda o job de migrações. Defina
migrations.enabled=false: o chart se recusa a renderizar o job nesse modo. Aplique as migrações de cada tenant pelo Tenant Manager.
JD_BASE_URL, JD_SOAP_PATH, JD_LEGACY_CODE, JD_USER_CODE e JD_PASSWORD. Ele lê o endereço JD e a credencial JD de cada tenant no AWS Secrets Manager.
No modo multi-tenant, o Courier ignora PIX_VENDOR_SUBJECTS. A chave de configuração em runtime jd-courier.pix/vendor_subjects lista as identidades da JD de cada tenant. O Courier responde 503 a todas as chamadas Pix da JD para um tenant sem entrada.
No modo multi-tenant, o Courier não inicia com PLUGIN_AUTH_ENABLED=false. Coloque MULTI_TENANT_SERVICE_API_KEY e MULTI_TENANT_REDIS_PASSWORD no Secret do Kubernetes.
Quem configura o quê na Lerian Cloud
- A Lerian configura o deploy: as variáveis de ambiente, a configuração em runtime e as migrações de cada tenant.
- O seu operador usa a API do operador como em um deploy single-tenant: os motores, o mapa de titularidade, os modos de entrega, o bypass, as mensagens retidas e a conciliação.
- Os seus motores usam a API dos motores, a interface SOAP e o endereço Pix como em um deploy single-tenant.

