Credenciais do Firebase no cluster de staging

TLDR: Criar o Secret Kubernetes firebase-credentials via Terraform com o JSON do Firebase Admin SDK, para que as notificações funcionem em staging.

Contexto

Os deployments web e worker já montam o volume firebase-credentials em /secrets/firebase/firebase-adminsdk.json e expõem FIREBASE_CREDENTIALS_PATH. No entanto, o Secret Kubernetes firebase-credentials nunca foi criado no Terraform — o arquivo JSON de credenciais não existe no cluster de staging, fazendo com que as notificações Firebase falhem silenciosamente.

Limitação conhecida: o conteúdo do JSON é armazenado inline no SOPS (staging.yaml). A manutenção exige re-encriptar o arquivo a cada rotação de credencial. Futuro: migrar para GCP Secret Manager ou AWS Secrets Manager.

Objetivos

  • Criar o Secret Kubernetes firebase-credentials no namespace onion-backend--staging
  • Armazenar o conteúdo do JSON encriptado via SOPS no staging.yaml

Fora de escopo

Não alterar os manifests k8s — já estão corretos.

Mudanças

  • .infra/terraform/secrets/staging.yaml — adicionar o campo firebase_credentials_json com o conteúdo do arquivo onion-firebase-adminsdk.json
  • .infra/terraform/secrets/staging.enc.yml — re-encriptar com SOPS após editar o plaintext
  • .infra/terraform/secrets.tf — adicionar resource "kubernetes_secret" "firebase_credentials" que lê local.secrets["firebase_credentials_json"] e cria o secret com a chave firebase-adminsdk.json

Como verificar

  1. Após terraform apply: kubectl get secret firebase-credentials -n onion-backend--staging
  2. Checar que o conteúdo bate: kubectl get secret firebase-credentials -n onion-backend--staging -o jsonpath='{.data.firebase-adminsdk\.json}' | base64 -d | jq .
  3. Reiniciar um pod web/worker e verificar nos logs que o Firebase inicializa sem erro

Documentação

Nenhuma mudança de documentação necessária.