fix: permitir los jobs del pipeline SaaS en la allowlist del Postgres (incidente) - #136
Merged
Merged
Conversation
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.
Contributor
There was a problem hiding this comment.
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
NetworkPolicyque permite 5432 desde pods del mismo namespace conadhoc.ar/odoo-job(match porExists). - 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
fixdbdel pipeline SaaS queda colgado:Y el efecto se amplifica: el
podAntiAffinitydefixdbesrequired, contopologyKey: kubernetes.io/hostnameynamespaceSelectorsobre todos los namespaces. O sea, un solofixdbpor 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 porExistspara cubrir los que se sumen.Validación
Desplegando el chart en
test-texterfeed-10-08-4:adhoc.ar/odoo-job=fixdbadhoc.ar/odoo-job=restoreadhoc.ar/app-name=odooadhoc.ar/app-name=intrusoLa policy sigue filtrando lo que debe.
Por qué no se detectó en #133
La validación de aquel PR midió
pg_stat_activityde bases en régimen, dondefixdbya había terminado hacía rato, y revisó los jobs del chart — por eso apareciówait-pgy 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
podAntiAffinityrequireddefixdbmerece revisión propia (está en el pipeline, no en este chart): convertirlo enpreferredevitaría que N jobs concurrentes fuercen N nodos.