内容提要
Álvaro Hernández建议使用OCI镜像分发Postgres扩展,以节省开发时间并利用OCI生态系统。通过OCI/Docker风格的镜像URL安装适用于特定平台的扩展包。可以建立一个社区注册表,自动构建各种平台的PGXN版本镜像。扩展作者可以将trunks发布到自己的注册表。
延伸解读
OCI 分发扩展的潜在优势
文章指出,通过 OCI 注册表分发 Postgres 扩展可以复用成熟的容器生态,避免重复造轮子。OCI 协议支持按平台过滤,客户端能直接拉取匹配架构的镜像,简化安装流程。此外,社区可建立自动构建 PGXN 发布镜像的注册表,扩展作者也能发布到自有注册表,组织可搭建内部注册表,这为扩展分发提供了灵活性和可扩展性。
概念验证的实现细节
作者扩展了 trunk 格式,生成 OCI 注解和平台配置 JSON 文件,并新增 push_trunk 脚本,利用 ORAS CLI 和 jq 构建清单并推送至注册表。安装脚本 install_trunk 则根据 uname 信息拉取对应平台镜像。演示使用 docker_compose.yml 搭建本地环境,验证了从构建到安装的完整流程,表明该方案在技术上可行。
待解决的挑战与限制
文章提到几个待解决问题:需要找到获取最新版本标签的方法;希望支持服务端按 Postgres 版本等注解过滤,而目前客户端需下载整个镜像索引;需支持纯 SQL 等跨架构扩展,可能通过发布单一标签镜像实现;社区注册表的托管位置和作者命名空间管理也需考虑。这些挑战虽不致命,但影响最终用户体验。
Q&A
为什么建议将Postgres扩展作为OCI镜像分发?
建议将Postgres扩展作为OCI镜像分发是为了节省开发时间并利用OCI生态系统的现有工具和基础设施。
如何通过OCI安装特定平台的Postgres扩展?
可以通过OCI/Docker风格的镜像URL安装适用于特定平台的扩展包,使用新的install_trunk脚本从注册表下载。
社区注册表的作用是什么?
社区注册表可以自动构建各种平台的PGXN版本镜像,方便用户获取不同平台的扩展。
使用OCI协议有什么好处?
使用OCI协议可以直接根据平台进行过滤,简化下载过程,避免不必要的下载和检查。
如何发布Trunk格式的镜像?
可以使用新的push_trunk脚本,结合ORAS CLI和jq构建必要的清单文件并推送到OCI注册表。
在使用OCI分发时面临哪些挑战?
面临的挑战包括如何找到最新版本、支持跨架构扩展以及如何组织社区注册表的发布。