chatmasta
an hour ago
Are you aware of extension_control_path? [0] Since PG18 it allows specifying multiple non-$system directories for extension control paths, which makes it easier to adopt composable patterns of extension bundling with immutable images.
CloudNativePG uses this for its Image Volume Extensions feature [1]. A lot of the CNPG team worked on contributing this to PG core because previously the only alternative was baking “God images” at build time (“-full” in this readme) with all extensions in them.
Now with the extension_control_path GUC, it’s possible to “attach” extensions as container volumes at runtime, without rebuilding the image of the container. Maybe you can adopt a similar approach in pglayers.
[0] https://postgresqlco.nf/doc/en/param/extension_control_path/
[1] https://cloudnative-pg.io/docs/1.30/imagevolume_extensions/