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(ebackend-store) apenas publicam seu catálogo de rotas (infra/gateway/routes.generated.json), sem mais gerar nem publicar a configuração completa do gateway. -
bffbusca os catálogos de rota dos dois repositórios (viagit clonecomCI_JOB_TOKENno CI, ou repositórios irmãos localmente), gera a configuração final do Envoy/oauth2-proxy e publica emgitops/dev-fuji/gateway/(branchmain) ougitops/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).
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(emmain/tag): gera apenas o ambiente correspondente e publicaenvoy.yaml/oauth2-proxy.envnogitops.
Pendências conhecidas
-
Trigger cross-repo — adiado deliberadamente, não esquecido: hoje um commit de rota nova em
backend/backend-storenão dispara o pipeline dobffsozinho — é 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-rbacainda 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).