Configurar TZ nos pods e no banco de staging
TLDR: Definir o timezone
America/Sao_Pauloem todos os pods k8s do onion-backend (staging) e no PostgreSQL de staging.
Contexto
Todos os pods do onion-backend rodam em UTC porque nenhuma variável TZ é definida. O cluster PostgreSQL de staging também usa UTC por padrão. Isso causa comportamento incorreto de agendamento nas tasks do Celery beat e timestamps desalinhados em logs e registros do banco em relação ao BRT (UTC-3).
Production ainda não é afetado — não existe.
Objetivos
- Todos os pods de staging interpretam o tempo como
America/Sao_Paulo(BRT, UTC-3) - O banco PostgreSQL de staging usa
America/Sao_Paulocomo timezone padrão
Fora de escopo
A mudança é aplicada apenas em staging — production está fora de escopo.
Mudanças
.infra/k8s/base/specs/ — adicionar a env var TZ: America/Sao_Paulo em:
- web-deployment.yaml
- worker-deployment.yaml
- worker-habits-deployment.yaml
- beat-deployment.yaml
- migrate-job.yaml
.infra/terraform/ — configurar o timezone do PostgreSQL via provider cyrilgdn/postgresql (já instalado):
- Adicionar o provider postgresql em versions.tf
- Adicionar recurso postgresql_configuration (ou postgresql_extension + role setting) em database.tf para definir TimeZone = 'America/Sao_Paulo' no cluster de staging
Como verificar
- Após o deploy,
kubectl exec -it <pod> -- date→ deve mostrar horário BRT - No banco:
SELECT current_setting('TimeZone');→ deve retornarAmerica/Sao_Paulo - Confirmar que os agendamentos do Celery beat disparam nos horários BRT esperados
Documentação
Nenhuma mudança de documentação necessária.