加布里埃尔·巴托利尼:CNPG 配方 23 - 在 CloudNativePG 中使用 ImageVolume 管理扩展

加布里埃尔·巴托利尼:CNPG 配方 23 - 在 CloudNativePG 中使用 ImageVolume 管理扩展

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

CloudNativePG 通过 Kubernetes 的 ImageVolume 功能,支持从独立镜像挂载 Postgres 扩展(如 pgvector 和 PostGIS),实现 PostgreSQL 核心与扩展二进制文件的解耦,简化动态添加和更新,避免构建大型自定义容器镜像。

🎯

关键要点

  • CloudNativePG 通过 Kubernetes 的 ImageVolume 功能支持从独立镜像挂载 Postgres 扩展。
  • 这种方法解耦了 PostgreSQL 核心与扩展二进制文件,简化了动态添加和更新。
  • 传统上,Postgres 扩展需要构建大型自定义容器镜像。
  • 新的方法结合了 PostgreSQL 18 的 extension_control_path GUC 和 Kubernetes 的 ImageVolume 功能。
  • pgvector 和 PostGIS 是通过 postgres-extensions-containers 项目发布的首批扩展镜像。
  • 使用小型官方 PostgreSQL 镜像可以无缝集成复杂扩展。
  • 此方法需要 Kubernetes 1.33 或更高版本,并且需要启用 ImageVolume 功能。
  • 演示中使用了最小的 CNPG 集群定义,确保基础 PostgreSQL 操作的正常运行。
  • 通过新的 postgresql.extensions 块引入 pgvector 扩展,避免使用重型自定义镜像。
  • CloudNativePG 处理扩展的挂载和 SQL 命令的执行,简化了管理过程。
  • 可以轻松添加复杂的扩展,如 PostGIS,确保其依赖关系的正确配置。
  • 使用 ImageVolume 的能力使得扩展的管理变得灵活和高效。
  • CloudNativePG 允许独立升级 PostgreSQL 核心镜像和扩展镜像,确保一致性和安全性。
  • 正在努力标准化扩展镜像的创建,以支持更多扩展的开发和维护。

延伸问答

CloudNativePG 如何支持 Postgres 扩展的挂载?

CloudNativePG 通过 Kubernetes 的 ImageVolume 功能支持从独立镜像挂载 Postgres 扩展,解耦了 PostgreSQL 核心与扩展二进制文件。

使用 ImageVolume 功能的前提条件是什么?

使用 ImageVolume 功能需要 Kubernetes 1.33 或更高版本,并且需要启用该功能。

如何在 CloudNativePG 中添加 pgvector 扩展?

可以通过在 PostgreSQL 集群定义中引入 postgresql.extensions 块,指定 pgvector 的镜像来添加该扩展。

CloudNativePG 如何简化扩展的管理过程?

CloudNativePG 处理扩展的挂载和 SQL 命令的执行,简化了管理过程,避免了使用重型自定义镜像。

使用 CloudNativePG 的 ImageVolume 功能有什么优势?

使用 ImageVolume 功能可以灵活高效地管理扩展,确保核心 PostgreSQL 镜像和扩展镜像的独立升级,保持一致性和安全性。

如何验证 pgvector 扩展是否成功挂载?

可以通过执行 kubectl 命令检查挂载的 /extensions/ 目录,确认 pgvector 二进制文件是否存在,并使用 SQL 命令验证扩展是否激活。

➡️

继续阅读