这个项目能做什么

CloudNativePG(CNPG)是一个开源运算符,用于在 Kubernetes 上运行和管理 PostgreSQL 数据库,覆盖从初始部署到持续维护的整个运维生命周期。该项目是云原生计算基金会(CNCF)沙箱项目,最初由 EDB 构建和赞助,采用 Apache-2.0 许可证发布。 该运算符不依赖 Patroni、repmgr 或 Stolon 等外部高可用工具,而是直接与 Kubernetes API 集成,遵循标准的运算符模式:PostgreSQL 集群的期望状态在 Cluster 自定义资源中声明,控制器持续将实际状态与之进行协调。集群状态通过同一资源暴露,因此可以使用普通的 Kubernetes 工具进行检查。应用容器遵循不可变基础设施模型,通过替换而非修补容器来应用更新。 自动化操作包括: - 故障转移管理:当主实例故障时,运算符选举新的主实例,更新集群状态,并编排过渡过程。 - 只读副本扩展:更改期望的副本数量时,会配置或移除持久卷、密钥和配置映射,同时管理流复制。 - 服务更新:Kubernetes 保持为唯一的事实来源,确保 PostgreSQL 服务端点保持最新。 - 滚动更新:镜像更新先部署到副本 Pod,然后进行主实例的受控切换。 除了 Cluster 资源之外,该运算符还管理其他 Kubernetes 资源,包括 Backup、ScheduledBackup、Database、Pooler、Publication、Subscription、ImageCatalog 和 ClusterImageCatalog,支持声明式备份调度、连接池、逻辑复制对象和镜像目录。 该项目的范围刻意保持精简:仅针对原生 Kubernetes 和原生 PostgreSQL,不支持其他数据库(如 MariaDB)或 PostgreSQL 分支(分支功能仅在可作为扩展或可插拔框架集成时才会考虑),并可通过 CNPG-I 插件接口进行扩展。其既定使命是通过将 PostgreSQL 纳入开发流程和 GitOps 驱动的 CI/CD 自动化,提高 PostgreSQL 在 Kubernetes 中的采用率。 该项目发布了快速入门指南、完整文档、路线图、常见问题解答和博客;举办公开社区会议,维护公开的采用者列表,并提供商业支持选项。该项目已在多次 KubeCon 活动中进行展示,主题包括超大型数据库的灾难恢复、Kubernetes 存储的垂直可扩展性、集群变更期间的基于仲裁的一致性,以及近乎零停机时间的数据库迁移。