大卫·惠勒:POC:通过OCI分发Trunk二进制文件

大卫·惠勒:POC:通过OCI分发Trunk二进制文件

💡 原文英文,约2100词,阅读约需8分钟。
📝

内容提要

Á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分发时面临哪些挑战?

面临的挑战包括如何找到最新版本、支持跨架构扩展以及如何组织社区注册表的发布。

🏷️

标签

➡️

继续阅读