首页/新闻资讯/正文详情

FerretDB 在 Kubernetes 上部署 DocumentDB PostgreSQL:从 StatefulSet 到集群连接完整指南

发布时间:2026/9/24 17:21:55 来源:云帆数科 栏目:资讯中心
FerretDB 在 Kubernetes 上部署 DocumentDB PostgreSQL:从 StatefulSet 到集群连接完整指南
后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载FerretDB 是开源 MongoDB 替代方案其 v2.x 版本以「PostgreSQL DocumentDB 扩展」作为存储引擎。本文以 v2.5 官方安装文档为主线讲解如何在 Kubernetes 集群中通过 StatefulSet 部署带 DocumentDB 扩展的 PostgreSQL 实例并通过 Service 暴露 5432 端口为后续 FerretDB 容器提供数据库连接。读完本文你将掌握postgres.yaml的完整清单结构、关键环境变量的作用、部署验证方法以及如何衔接 FerretDB 的 Kubernetes 部署完成整条链路的连通。前置条件与架构概述在 Kubernetes 上运行 FerretDB 需要两个核心组件PostgreSQL DocumentDB 扩展作为数据库引擎负责数据存储、认证与查询执行FerretDB 本身作为 MongoDB Wire Protocol 的入口将 MongoDB 请求翻译为 PostgreSQL 查询。本文聚焦第一个组件——DocumentDB PostgreSQL 的 Kubernetes 部署。官方文档强调在开始安装之前请确保你已经有一个运行中的 Kubernetes 集群本指南不包含集群本身的搭建步骤。整个数据链路可以概括为MongoDB 客户端 (mongosh) │ 27017 MongoDB Wire Protocol ▼ FerretDB Pod │ postgres://user:passpostgres:5432/postgres ▼ PostgreSQL DocumentDB (StatefulSet, 端口 5432)选择正确的 DocumentDB 镜像与版本标签FerretDB 官方提供了预打包的 PostgreSQL with DocumentDB 扩展镜像可用于各种部署方式Docker、Kubernetes 等。在 Docker 安装文档 中可以看到官方镜像分为两类生产镜像ghcr.io/ferretdb/postgres-documentdb稳定、经过优化的正式部署镜像大多数场景推荐使用开发镜像ghcr.io/ferretdb/postgres-documentdb-dev包含额外调试特性但性能显著更慢不推荐用于生产。版本标签规范官方强烈建议始终指定完整的镜像标签如17-0.106.0-ferretdb-2.5.0以保证跨环境部署的一致性。这个标签的语义为标签片段含义17PostgreSQL 主版本号170.106.0DocumentDB 扩展版本ferretdb-2.5.0对应的 FerretDB 版本镜像标签与 FerretDB 版本必须匹配。具体的「最佳镜像版本」组合需要查看对应的 DocumentDB release notes 进行确认切勿混用不匹配的版本组合。提示生产镜像不包含 FerretDB 本体因此你需要分别部署 FerretDB见下文「连接 FerretDB」小节。创建 postgres.yamlStatefulSet Service 清单详解官方文档提供了一份可直接使用的postgres.yaml清单其中包含两个 Kubernetes 资源用---分隔1. StatefulSet声明式管理 PostgreSQL PodapiVersion: apps/v1 kind: StatefulSet metadata: name: postgres spec: serviceName: postgres replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: ghcr.io/ferretdb/postgres-documentdb:17-0.106.0-ferretdb-2.5.0 ports: - containerPort: 5432 env: - name: POSTGRES_USER value: username - name: POSTGRES_PASSWORD value: password - name: POSTGRES_DB value: postgres volumeMounts: - name: data mountPath: /var/lib/postgresql/data volumeClaimTemplates: - metadata: name: data spec: accessModes: [ReadWriteOnce] resources: requests: storage: 1Gi关键设计点说明StatefulSet volumeClaimTemplates选择 StatefulSet 而非 Deployment是为了给 PostgreSQL 提供稳定的持久化存储。volumeClaimTemplates会为每个副本自动创建 PVCPersistentVolumeClaimaccessModes: [ReadWriteOnce]表示卷只能被单个节点读写storage: 1Gi是初始存储请求可按实际数据量调整mountPath: /var/lib/postgresql/data这是 PostgreSQL 的数据目录将数据卷挂载到此处保证 Pod 重建后数据不丢失环境变量三件套POSTGRES_USER/POSTGRES_PASSWORD数据库超级用户凭据必须替换为你的实际值文档中的username、password是占位符POSTGRES_DB必须固定为postgres。这是正确初始化 DocumentDB 扩展的硬性要求——FerretDB 需要postgres数据库已初始化且存在才能建立连接。从仓库安全文档 authentication.md 可知FerretDB 自身不保存任何用户凭据认证完全依赖 PostgreSQL。因此这个 StatefulSet 中创建的超级用户正是后续 FerretDB 与 MongoDB 客户端认证所依赖的凭据来源。2. Service固定访问入口apiVersion: v1 kind: Service metadata: name: postgres labels: app: postgres spec: selector: app: postgres ports: - port: 5432 targetPort: 5432Service 名为postgres通过selector匹配标签app: postgres的 Pod将集群内流量转发到 Pod 的 5432 端口。这样 FerretDB 容器就可以用主机名postgres访问数据库而无需关心 Pod IP 的变化。部署并验证 PostgreSQL 实例创建清单文件后执行应用命令kubectl apply -f postgres.yaml该命令会同时创建 StatefulSet 与 Service。随后官方建议通过以下命令检查实例状态kubectl get pods -l apppostgres kubectl get svc -l apppostgreskubectl get pods查看 PostgreSQL Pod 是否进入Running/Ready状态kubectl get svc确认名为postgres的 Service 已创建且CLUSTER-IP与端口 5432 就绪。Pod 正常就绪后集群内即可通过postgres:5432解析到数据库服务。这也是下一节 FerretDB 连接字符串中主机名的来源。连接 FerretDB完成整条链路PostgreSQL 实例就绪后需要将 FerretDB 部署到同一集群中。完整步骤见 FerretDB Kubernetes 安装文档其核心连接配置如下# ferretdb.yaml节选 containers: - name: ferretdb image: ghcr.io/ferretdb/ferretdb:2.5.0 ports: - containerPort: 27017 env: - name: FERRETDB_POSTGRESQL_URL value: postgres://username:passwordpostgres:5432/postgres连接字符串解读postgres://PostgreSQL 协议连接 URLusername:password与 postgres.yaml 中POSTGRES_USER/POSTGRES_PASSWORD保持一致postgres:5432主机名postgres正是上文 Service 的名字集群内 DNS 会将其解析到对应 Pod/postgres必须连接postgres数据库因为 DocumentDB 扩展在该库中初始化。FERRETDB_POSTGRESQL_URL对应命令行参数--postgresql-url。根据 flags.md 的说明其默认值为postgres://127.0.0.1:5432/postgres在 Kubernetes 场景下必须显式指定为 Service 地址。FerretDB 使用 pgx v5 驱动连接 PostgreSQL并额外设置了连接池参数pool_min_conns默认 10、pool_max_conns默认 50、application_nameFerretDB与timezoneUTC。从源码实现看嵌入式实现入口 的Config结构将PostgreSQLURL标记为必需字段Required进一步印证了数据库连接在 FerretDB 启动流程中的核心地位。本地验证连通性FerretDB 部署完成后可通过端口转发从本机连接kubectl port-forward svc/ferretdb 27017:27017然后在另一个终端用mongosh连接若已安装mongosh mongodb://username:password127.0.0.1:27017/若认证失败请检查PostgreSQL 中是否已存在对应用户、POSTGRES_DB是否为postgres以及 FerretDB 连接串中的凭据是否一致。FerretDB 目前仅支持客户端侧SCRAM-SHA-256认证机制详细认证流程见 认证文档。生产化与运维要点基于官方文档与仓库配置信息以下实践建议值得在生产环境中采纳固定镜像标签始终使用完整标签如17-0.106.0-ferretdb-2.5.0避免latest类标签带来的不可控漂移存储容量规划volumeClaimTemplates中的storage: 1Gi仅为最小示例应根据数据增长预期调整并考虑使用带备份能力的存储类凭据管理YAML 中的明文password适合快速上手生产环境应改用 Kubernetes Secret 或外部密钥管理健康检查FerretDB 提供/debug/livez存活探针与/debug/readyz就绪探针两个 HTTP 端点其中readyz会实际执行ping命令验证 PostgreSQL 连接与 DocumentDB 安装是否正确可直接接入 Kubernetes liveness/readinessProbe详见 observability.md升级顺序官方升级指南见 Docker 版更新章节强调升级 FerretDB 前必须先升级匹配的 DocumentDB 镜像并执行ALTER EXTENSION documentdb UPDATE;切勿颠倒顺序。总结本文完整复现了 FerretDB v2.5 官方 Kubernetes 部署文档的核心流程通过postgres.yamlStatefulSet Service在集群中拉起带 DocumentDB 扩展的 PostgreSQL将POSTGRES_DB固定为postgres以满足扩展初始化要求随后用kubectl apply应用清单并验证 Pod 与 Service 状态最后通过FERRETDB_POSTGRESQL_URL将 FerretDB 指向postgres:5432完成整条链路。这套清单既是官方推荐的生产部署基线也是理解 FerretDB「MongoDB 协议翻译层 PostgreSQL 存储引擎」架构的绝佳入口。赞分享后端数据库文档数据库【免费下载链接】FerretDBA truly Open Source MongoDB alternative项目地址https://gitcode.com/gh_mirrors/fe/FerretDB点击查看免费下载相关推荐JDK HotSpot 反汇编插件 hsdisCapstone、LLVM、binutils 三大后端的构建与使用实战指南JDK HotSpot 反汇编插件 hsdisCapstone、LLVM、binutils 三大后端的构建与使用实战指南 本文围绕 JDK 仓库中的 hsdi后端数据库文档数据库掌握 GitHub Copilot CLI 技能系统用 SKILL.md 打造可自动匹配的领域专家掌握 GitHub Copilot CLI 技能系统用 SKILL.md 打造可自动匹配的领域专家 本篇技术指南以 awesome copilot 仓库中 c后端数据库文档数据库Refine 中 MUI Material UI 与 X Data Grid 版本迁移指南从 v5/v4 升级到 v6/v7 的完整实操Refine 中 MUI Material UI 与 X Data Grid 版本迁移指南从 v5/v4 升级到 v6/v7 的完整实操 本文是 Refine后端数据库文档数据库上一篇如何让老Mac免费装上最新macOSOpenCore Legacy Patcher 完整指南下一篇将 Repomix 作为 Node.js 库集成从 runCli 到底层 API 的完整实践指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Deep-Live-Cam 快速上手:5分钟跑通摄像头实时人脸替换
Deep-Live-Cam 快速上手:5分钟跑通摄像头实时人脸替换

Deep-Live-Cam 快速上手:5分钟跑通摄像头实时人脸替换 【免费下载链接】Deep-Live-Cam real time face swap and one-click video deepfake with only a single image 项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam 你正在开线上会议&… · 2026/9/24 17:21:48

在 TEN Agent 中集成 OpenAI Realtime 多模态大模型:openai_mllm_python 扩展实战指南
在 TEN Agent 中集成 OpenAI Realtime 多模态大模型:openai_mllm_python 扩展实战指南

人工智能AI Agent多模态语音AI 应用 【免费下载链接】ten-framework Open-source framework for conversational voice AI agents 项目地址: https://gitcode.com/TEN-framework/ten-framework 点击查看 免费下载 本指南以 TEN-framework 仓库中的 openai_mllm_pyt… · 2026/9/24 17:21:42

Relay 20 刷新查询(Refreshing Queries)实战指南:useQueryLoader、useLazyLoadQuery 与 fetchQuery 三种刷新方案详解
Relay 20 刷新查询(Refreshing Queries)实战指南:useQueryLoader、useLazyLoadQuery 与 fetchQuery 三种刷新方案详解

前端开发工具 【免费下载链接】relay Relay is a JavaScript framework for building data-driven React applications. 项目地址: https://gitcode.com/gh_mirrors/relay29/relay 点击查看 免费下载 在 Relay 驱动的 React 应用中,"刷新查询"… · 2026/9/24 17:21:42

8张国产GPU用HAMi承载30个开发环境的实践解析
8张国产GPU用HAMi承载30个开发环境的实践解析

8 张国产 GPU 装满 30 个开发环境,这事听起来有点“挤”,但电科云确实用 HAMi 做到了。最早我们团队拿到一批国产加速卡时,第一反应也是头疼:AI 开发环境每人都想要独立卡,但物理卡就只有 8 张,别说 30 人&… · 2026/9/24 21:32:25

链接器原理与实战:符号解析、重定位及动态库排查指南
链接器原理与实战:符号解析、重定位及动态库排查指南

1. 链接器到底在干什么:从一个编译报错说起如果你写过C或者C,大概率见过这个报错:undefined reference to xxx。很多人第一反应是“我函数明明写了啊”,然后翻遍头文件、检查拼写、怀疑编译器抽风。实际上,这个报错跟编… · 2026/9/24 21:32:25

腾讯数字人+大模型知识引擎:RAG驱动的智能交互落地全解析
腾讯数字人+大模型知识引擎:RAG驱动的智能交互落地全解析

最近一直在调研数字人和大模型结合落地的方案,腾讯数字人与大模型知识引擎这两个产品放在一起琢磨,信息量其实非常大。数字人负责“像人”,知识引擎负责“懂人”,两个能力叠在一起,才真正解决了一直以来虚拟客服、虚拟… · 2026/9/24 21:32:12

RAG结果如何沉淀为可维护的知识资产:Markdown+TypeScript+MCP实践
RAG结果如何沉淀为可维护的知识资产:Markdown+TypeScript+MCP实践

1. 为什么“RAG 结果”需要变成“知识资产”1.1 从“能查到”到“能维护”的断层做过 RAG 项目的人大概都有过这种体验:向量库搭起来了,文档切块也跑通了,问一个问题,模型能吐出看起来挺像样的答案。但过了一两个月,你… · 2026/9/24 21:32:12

克拉美罗界在DOA估计中的工程实践:推导、Python实现与避坑指南
克拉美罗界在DOA估计中的工程实践:推导、Python实现与避坑指南

简介:阵列信号处理中,克拉美罗界(CRB)是参数估计误差的理论下界,源自费歇尔信息矩阵,为任何无偏估计器设定了方差下限。这份资源以克拉美罗界为核心,针对MUSIC与ESPRIT两种经典的空间谱估计算法… · 2026/9/24 21:32:12

大模型长尾知识问答实战:RAG混合检索与GraphRAG方案
大模型长尾知识问答实战:RAG混合检索与GraphRAG方案

1. 长尾问题为什么总是让大模型“一本正经地胡说”1.1 一个真实场景:冷门型号的引脚定义去年帮一个做硬件的朋友查一颗停产多年的电源管理芯片,型号冷门到在主流搜索引擎上只能翻出两份模糊的扫描版数据手册。我顺手把型号丢给某款通用大模型&#xff0c… · 2026/9/24 21:32:05

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码