Repositório dedicado do Gateway (bff)

A configuração do gateway/BFF (Gateway / BFF (Token Handler Pattern)) é gerada e publicada a partir de um repositório dedicado (bff), independente do backend.

Motivação

Antes da extração, a configuração do gateway (templates Envoy, geração de rotas, testes de RBAC) vivia em infra/gateway/ dentro do backend, e era propagada manualmente para os demais repositórios: backend-store → backend → gitops, via cópia de arquivos assumindo os três repositórios como diretórios irmãos no disco. Esse cascade manual motivou a extração para um repositório próprio.

Arquitetura resultante

  • backend (e backend-store) apenas publicam seu catálogo de rotas (infra/gateway/routes.generated.json), sem mais gerar nem publicar a configuração completa do gateway.

  • bff busca os catálogos de rota dos dois repositórios (via git clone com CI_JOB_TOKEN no CI, ou repositórios irmãos localmente), gera a configuração final do Envoy/oauth2-proxy e publica em gitops/dev-fuji/gateway/ (branch main) ou gitops/fuji/gateway/ (tag → produção).

  • Publicação feita via API do GitLab, com um commit atômico contendo apenas os arquivos que de fato mudaram (evita commits vazios de config repetida).

multi-repo-gateway

Pipeline

  • Estágio checks (em branches != main): roda testes e a geração de configuração para todos os ambientes, sem publicar.

  • Estágio publish (em main/tag): gera apenas o ambiente correspondente e publica envoy.yaml/oauth2-proxy.env no gitops.

Pendências conhecidas

  • Trigger cross-repo — adiado deliberadamente, não esquecido: hoje um commit de rota nova em backend/backend-store não dispara o pipeline do bff sozinho — é necessário um push manual neste repositório. Essa é uma decisão explícita para deixar o fluxo manual amadurecer antes de evoluir para um pipeline multi-project trigger.

  • make test-rbac ainda roda fora do CI (depende de um client Keycloak de teste com Direct Access Grants).

Documentação operacional detalhada (troubleshooting, setup local) fica no README do próprio repositório bff (infra/gateway/README.adoc no histórico anterior à extração).