Pular para o conteúdo principal
O Manager e o Worker do Fetcher são configurados inteiramente por variáveis de ambiente — cada componente lê seu próprio arquivo .env (components/manager/.env, components/worker/.env). Esta página cobre as variáveis que importam para uma implantação MVP; os arquivos .env.example no repositório são a referência exaustiva.

Chaves de criptografia


VariávelComponenteDescrição
APP_ENC_KEYManager + WorkerObrigatória. Chave-mestra de 32 bytes codificada em base64. Gere com make generate-master-key. Os dois serviços devem compartilhar o mesmo valor.
APP_ENC_KEY_VERSIONManager + WorkerContador de rotação de chave (padrão 1). Incremente ao rotacionar; o Fetcher rastreia qual versão criptografou cada credencial.
A partir dessa única chave-mestra, o Fetcher deriva três chaves independentes via HKDF: criptografia de credenciais (AES-256-GCM), assinatura de mensagens internas entre Manager e Worker (HMAC-SHA256) e assinatura externa de documentos, para que consumidores verifiquem os dados extraídos. Consumidores derivam a chave de verificação com make derive-key KEY="<chave-mestra>".

API do Manager


VariávelDescriçãoPadrão
SERVER_PORTPorta HTTP da API do Manager4006
SCHEMA_CACHE_TTL_SECONDSPor quanto tempo esquemas descobertos ficam em cache300
PLUGIN_AUTH_ENABLEDDelegar autenticação/autorização ao Access Managerfalse
PLUGIN_AUTH_ADDRESSEndereço do Access Manager quando a autenticação está habilitada
LOG_LEVELVerbosidade dos logsdebug (local)

Infraestrutura


Ambos os serviços conectam ao MongoDB (metadados) e ao RabbitMQ (fila de jobs); o Manager também usa Valkey/Redis para cache, e o Worker grava resultados em object storage.
VariávelComponenteDescrição
MONGO_HOST, MONGO_PORT, MONGO_NAME, MONGO_USER, MONGO_PASSWORDManager + WorkerArmazenamento de metadados no MongoDB
RABBITMQ_HOST, RABBITMQ_PORT_AMQP, RABBITMQ_DEFAULT_USER, RABBITMQ_DEFAULT_PASSManager + WorkerBroker RabbitMQ
RABBITMQ_FETCHER_WORK_QUEUEManager + WorkerFila de trabalho de extração (padrão fetcher.extract-external-data.queue)
RABBITMQ_NUMBERS_OF_WORKERSWorkerWorkers de extração concorrentes (padrão 5)
REDIS_HOST, REDIS_PORT, REDIS_PASSWORDManagerCache Valkey/Redis
OBJECT_STORAGE_ENDPOINT, OBJECT_STORAGE_REGION, OBJECT_STORAGE_BUCKET, OBJECT_STORAGE_ACCESS_KEY_ID, OBJECT_STORAGE_SECRET_KEYWorkerArmazenamento de resultados compatível com S3 (SeaweedFS por padrão; AWS S3 e MinIO funcionam da mesma forma)
ENGINE_MAX_RESULT_BYTESWorkerTeto do artefato de resultado serializado por job (padrão 256 MiB)
Opções relacionadas a TLS (MONGO_TLS_CA_CERT, REDIS_TLS, RABBITMQ_TLS) estão disponíveis por dependência.

Streaming de eventos de jobs


O Worker publica notificações obrigatórias job.completed e job.failed e falha de forma fechada na inicialização se o streaming não estiver habilitado:
VariávelDescriçãoPadrão
STREAMING_ENABLEDDeve ser true para o Worker iniciarfalse
STREAMING_BROKERSServidores bootstrap Kafka/Redpandalocalhost:9092
STREAMING_CLOUDEVENTS_SOURCEOrigem CloudEvents dos eventos do Worker
RABBITMQ_JOB_EVENTS_EXCHANGEExchange RabbitMQ para eventos de jobsfetcher.job.events
Implantações single-tenant emitem eventos com o tenant ID estável single-tenant.

Multi-tenancy


VariávelDescriçãoPadrão
MULTI_TENANT_ENABLEDHabilita o modo multi-tenantfalse
MULTI_TENANT_URLURL do serviço Tenant Manager
MULTI_TENANT_MAX_TENANT_POOLSMáximo de pools de conexão de tenant concorrentes100
MULTI_TENANT_IDLE_TIMEOUT_SECTimeout de conexão ociosa de tenant300
MULTI_TENANT_CIRCUIT_BREAKER_THRESHOLDLimite de falhas do circuit breaker5
MULTI_TENANT_CIRCUIT_BREAKER_TIMEOUT_SECTimeout de reset do circuit breaker30
Habilitar o modo multi-tenant também ativa a guarda de segurança contra SSRF: hosts de conexão fornecidos por tenants são checados contra faixas de loopback, endereços privados (RFC 1918) e metadados de nuvem antes de o Fetcher conectar. Com MULTI_TENANT_ENABLED=false (o padrão), todos os caminhos de código multi-tenant são ignorados com impacto zero de desempenho.

Readiness e postura de TLS


VariávelDescriçãoPadrão
DEPLOYMENT_MODEsaas, byoc ou local — etiqueta o /readyz e comanda a exigência de TLS em SaaSlocal
ALLOW_INSECURE_TLSPermite conexões em texto claro com MongoDB, Redis e RabbitMQ. O Fetcher falha de forma fechada em URIs de conexão inseguras por padrão — defina apenas para desenvolvimento local.não definida (fail closed)
READYZ_DRAIN_DELAY_SECJanela de drenagem graciosa após SIGTERM, durante a qual o /readyz reporta unhealthy antes de as conexões serem encerradas12
Ambos os serviços expõem GET /health (liveness), GET /readyz (readiness com sondas paralelas de dependências) e GET /version.

Datasources internos


Bancos fixos, de propriedade do operador, podem ser declarados como variáveis de ambiente em vez de conexões registradas pela API, usando a família DATASOURCE_{NAME}_*:
VariávelObrigatóriaExemplo
DATASOURCE_{N}_CONFIG_NAMEsimbilling_db
DATASOURCE_{N}_TYPEsimpostgresql / mysql / oracle / mongodb / sql_server
DATASOURCE_{N}_HOSTsimdb.internal.example.com
DATASOURCE_{N}_PORTsim5432
DATASOURCE_{N}_DATABASEsimbilling
DATASOURCE_{N}_USERsimfetcher_ro
DATASOURCE_{N}_PASSWORDsimdo seu gerenciador de segredos
DATASOURCE_{N}_OPTIONSnãoauthSource=admin (apenas MongoDB)
DATASOURCE_{N}_SSLMODEnãorequire (PostgreSQL)
Para TLS com um banco gerenciado nesse caminho, _SSLMODE é a opção validada; plumbing de CA customizada ou certificado de cliente para datasources internos não está disponível.

Observabilidade


O Fetcher emite traces e métricas OpenTelemetry quando a telemetria está habilitada:
VariávelDescriçãoPadrão
ENABLE_TELEMETRYLiga/desliga a emissão OTelfalse
OTEL_EXPORTER_OTLP_ENDPOINTEndpoint do coletor OTLP
OTEL_RESOURCE_SERVICE_NAMENome do serviço na telemetria (fetcher / fetcher-worker)por componente