From 83787e0cbc1ae4414cdc9305b7fddf4e1a53ff59 Mon Sep 17 00:00:00 2001 From: deploy Date: Sat, 19 Sep 2026 19:29:48 +0000 Subject: [PATCH] fix(acme): egress para o PgBouncer do compartilhado (P4.7) --- .../acme/14-netpol-banco-compartilhado.yaml | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tenants/acme/14-netpol-banco-compartilhado.yaml diff --git a/tenants/acme/14-netpol-banco-compartilhado.yaml b/tenants/acme/14-netpol-banco-compartilhado.yaml new file mode 100644 index 0000000..baa2036 --- /dev/null +++ b/tenants/acme/14-netpol-banco-compartilhado.yaml @@ -0,0 +1,40 @@ +# ============================================================================= +# P4.7 — egress do acme para o PgBouncer do banco compartilhado. +# +# A copia, para o `acme-prod`, do molde em +# `tenants/plataforma/14-netpol-banco-compartilhado.yaml`. NetworkPolicy nao +# atravessa namespace: o `15-netpol-tenants-no-pgbouncer.yaml` abre a ENTRADA +# no plataforma, e esta abre a SAIDA daqui. Precisa das duas. +# +# ── POR QUE O `ipBlock: 10.43.0.0/16` DO deny-cross-tenant NAO BASTA ───────── +# +# Conferido no cluster em 2026-09-19: sem esta politica, `psql` de um pod do +# demo para `pgbouncer.plataforma-prod:6432` da "Connection refused" — com o +# Service, o endpoint e o PgBouncer saudaveis. O controlador de rede do k3s +# avalia a politica DEPOIS do DNAT do Service, contra o IP do POD (10.42.x), +# e nenhuma regra do deny-cross-tenant cobre pod de outro namespace. +# +# So a 6432, so no PgBouncer. O backup do acme e feito pelo CronJob do +# `plataforma` (51-backup-compartilhado.yaml), e nao daqui: o 5432 do +# Postgres continua fechado para o tenant. +# ============================================================================= +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: egress-banco-compartilhado + namespace: acme-prod +spec: + # Todos os pods do tenant: os servicos, os runtimes da consolidacao e o pod + # de teste de conexao do script de migracao. + podSelector: {} + policyTypes: [Egress] + egress: + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: plataforma-prod + podSelector: + matchLabels: + app: pgbouncer + ports: + - { protocol: TCP, port: 6432 }