pgbouncer: &pgbouncer_config nodeSelector: kubernetes.io/hostname: pi2 # close to postgres instance config: adminUser: "admin" adminPassword: "admin" authUser: &authUser pgbouncer_auth authPassword: *authUser databases: "*": host: "192.168.1.202" # kubernetes.io/hostname=pi2 ip port: 5432 pgbouncer: auth_type: scram-sha-256 auth_query: SELECT uname, phash FROM user_lookup($1) ignore_startup_parameters: extra_float_digits # unsupported jdbc extra_float_digits=2 argument # Ce pgbouncer est PARTAGÉ (crowdsec, plausible, kadans, + le compte que # Vault utilise sur la base `postgres`). Ce qu'un client laisse derrière # lui sur une connexion serveur, le client SUIVANT en hérite : le reset # est la SEULE barrière entre deux clients d'un même pool. # # `DEALLOCATE ALL` ne nettoie QUE les requêtes préparées — d'où sa mise en # place (07e2c6d, « prepared statement already exists » de crowdsec). # Tout le reste de l'état de session passait au suivant. MESURÉ contre un # pgbouncer 1.25.2 monté avec CETTE configuration (session, pool_size=1) : # le client 2, qui n'avait rien demandé, héritait de `work_mem=17MB`, du # `LISTEN canal_test` du client 1, de sa table TEMP — et de son `SET ROLE`, # au point de créer des tables appartenant à un autre rôle que le sien. # # `DISCARD ALL` est le défaut de pgbouncer, et c'est un SUR-ENSEMBLE strict # des deux valeurs qui l'ont précédé ici : il contient `DEALLOCATE ALL` # (donc le correctif crowdsec est conservé — vérifié : deux clients # successifs préparent le même nom sans erreur) ET # `SELECT pg_advisory_unlock_all()` (la valeur que pose le sous-chart). # # Il ne peut RIEN casser pour un client vivant : en `pool_mode = session` # la connexion serveur n'est rendue qu'à la déconnexion du client, donc le # reset ne court jamais entre deux requêtes d'une même session. Vérifié : # table TEMP, `SET work_mem` et `LISTEN` d'un client VIVANT survivent. server_reset_query: DISCARD ALL # défaut pgbouncer — ⚠ ne pas réduire : voir ci-dessus server_idle_timeout: 7200 pgbouncerExporter: enabled: false tool: # kind: 'SubChart' or 'HelmChart', if subchart then uncomment Chart.yaml dependency, else comment and use tool library with helm chart template kind: 'SubChart' repo: https://icoretech.github.io/helm chart: pgbouncer version: 2.3.1 values: *pgbouncer_config