Skip to content

fix: permitir los jobs del pipeline SaaS en la allowlist del Postgres (incidente) - #136

Merged
az-adhoc merged 1 commit into
mainfrom
fix/networkpolicy-permitir-jobs-pipeline
Aug 10, 2026
Merged

fix: permitir los jobs del pipeline SaaS en la allowlist del Postgres (incidente)#136
az-adhoc merged 1 commit into
mainfrom
fix/networkpolicy-permitir-jobs-pipeline

Conversation

@az-adhoc

Copy link
Copy Markdown
Contributor

Warning

Arregla un incidente activo introducido por #133. Desde ese merge, las bases nuevas no terminan de crearse. Conviene mergear rápido: cada base que se cree mientras tanto nace bloqueada.

Qué está pasando

El job fixdb del pipeline SaaS queda colgado:

Waiting until the database server is listening...
labels: adhoc.ar/odoo-job: fixdb     ← no está en la allowlist de #133

Y el efecto se amplifica: el podAntiAffinity de fixdb es required, con topologyKey: kubernetes.io/hostname y namespaceSelector sobre todos los namespaces. O sea, un solo fixdb por nodo en todo el cluster. Con ~21 colgados, el nodepool de cell01 escaló de 9 a 20 nodos.

Alcance al detectarlo: 26 namespaces con la policy en cell01 y 24 jobs activos sin completar. En cell02 solo la base donde se validó #133, sin jobs colgados.

El fix

Los jobs del pipeline no los crea este chart, así que no aparecen en su render: los crea el provider dentro del namespace de la base. Todos llevan la clave adhoc.ar/odoo-job (fixdb, restore), así que la regla matchea por Exists para cubrir los que se sumen.

Validación

Desplegando el chart en test-texterfeed-10-08-4:

Origen 5432
adhoc.ar/odoo-job=fixdb ✅ accepting connections
adhoc.ar/odoo-job=restore ✅ accepting connections
adhoc.ar/app-name=odoo ✅ accepting connections
adhoc.ar/app-name=intruso 🚫 no response

La policy sigue filtrando lo que debe.

Por qué no se detectó en #133

La validación de aquel PR midió pg_stat_activity de bases en régimen, donde fixdb ya había terminado hacía rato, y revisó los jobs del chart — por eso apareció wait-pg y se corrigió. Los jobs del pipeline viven fuera del chart y solo corren durante la creación.

La review automatizada lo había marcado de forma genérica ("jobs que conecten por SQL quedarían cortados, confianza alta") y se descartó con esa medición incompleta.

Queda una advertencia en el comentario del manifiesto: una allowlist de ingress al Postgres se valida contra una creación de base completa, no contra una base ya andando. Los flujos episódicos —crear, restaurar, actualizar— son los que no se ven en régimen.

Nota aparte

El podAntiAffinity required de fixdb merece revisión propia (está en el pipeline, no en este chart): convertirlo en preferred evitaría que N jobs concurrentes fuercen N nodos.

INCIDENTE: desde que se mergeó #133 las bases nuevas no terminaban de crearse. El job
fixdb del pipeline queda colgado en "Waiting until the database server is listening..."
porque la allowlist no lo contempla, y como su podAntiAffinity es required con
topologyKey hostname y namespaceSelector sobre todos los namespaces, cada fixdb colgado
ocupa un nodo entero: el nodepool de cell01 escaló de 9 a 20 nodos.

Los jobs del pipeline no los crea este chart, así que no aparecen en su render: los crea
el provider dentro del namespace de la base. Todos llevan la clave adhoc.ar/odoo-job
(fixdb, restore), así que la regla matchea por Exists para cubrir los que se sumen.

Validado desplegando el chart en test-texterfeed-10-08-4:

  adhoc.ar/odoo-job=fixdb     -> accepting connections
  adhoc.ar/odoo-job=restore   -> accepting connections
  adhoc.ar/app-name=odoo      -> accepting connections
  adhoc.ar/app-name=intruso   -> no response

Por qué no se detectó antes: la validación de #133 se hizo midiendo pg_stat_activity de
bases en régimen, donde fixdb ya había terminado hacía rato, y revisando los jobs del
chart (donde sí apareció wait-pg). Los jobs del pipeline viven fuera del chart y solo
corren durante la creación. Se agrega esa advertencia al comentario del manifiesto para
que la próxima allowlist se valide contra una creación completa.
@az-adhoc
az-adhoc merged commit 2e019e4 into main Aug 10, 2026
4 checks passed
@az-adhoc
az-adhoc deleted the fix/networkpolicy-permitir-jobs-pipeline branch August 10, 2026 15:38
@az-adhoc
az-adhoc requested a lite review from Copilot August 10, 2026 15:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Este PR ajusta la allowlist de ingress al Postgres (CNPG) en el chart adhoc-odoo para permitir que los jobs del pipeline SaaS (p.ej. fixdb, restore) puedan conectar al puerto 5432 durante flujos episódicos de creación/restauración, corrigiendo un incidente introducido tras #133.

Changes:

  • Agrega una regla de NetworkPolicy que permite 5432 desde pods del mismo namespace con adhoc.ar/odoo-job (match por Exists).
  • Refuerza el comentario del manifiesto sobre la necesidad de validar la allowlist contra una creación completa (flujos episódicos), no solo contra una base “en régimen”.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +53 to +56
# Jobs del pipeline SaaS (fixdb, restore, ...). NO los crea este chart, así que no
# aparecen en el render: los crea el provider en el namespace de la base y todos llevan
# la clave adhoc.ar/odoo-job. Se matchea por Exists para cubrir los que se sumen.
# Sin esta regla la creación de una base queda colgada en "Waiting until the database
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants