2022 年 4 月 21 日,EDB 发布了CloudNativePG——一个开源的 Kubernetes 操作符,为 Postgres 数据库管理系统管理高可用的主/备集群架构。
CloudNativePG 遵循 Apache 2.0 许可协议,现在归一个新成立的项目贡献者社区拥有和管理。该社区遵循云原生计算基金会(CNCF)的坚实原则和价值观,其中包括开放性、公平性、包容性、技术卓越、“社区高于产品/公司”、内在质量和内在安全。我是该项目初始维护小组的一员。目前,该小组由 EDB 内部提交排名前 6 的项目提交者组成。
我们采用这种开放的、供应商中立的模式,是受我们以往的经验以及我们为 Postgres in Kubernetes 设定的未来愿景所影响。它反映了我们在过去二十年中对 Postgres 社区的直接贡献,以及我们多年来致力于使 CloudNativePG从云原生计算基金会(CNCF)毕业的努力。
目前,CNCF 项目有三个成熟度级别或阶段:沙盒、孵化和毕业。为了进入下一个阶段,直至最终毕业,每个项目都需要证明它可信、可持续、被广泛采用、具有健康的变更率,并且是由来自多个组织的贡献者开发的。
用 AC/DC 的话说,“登顶之路漫漫”。然而,如果 CNCF 技术监督委员会(TOC)给予我们进入沙盒的机会,我们承诺将带领 CloudNativePG 走完全程,也希望有那些同样致力于改善 Postgres in Kubernetes 数据库体验的用户和供应商参与。
我们相信,CNCF 认可的开源操作符将帮助更多的用户在 Kubernetes 中运行 Postgres 数据库工作负载以及它们的客户端应用。这些工作负载将与基础设施的其他组件完美集成,包括监控、告警、日志、追踪、存储、安全和合规。此外,在运行应用程序的 Kubernetes 集群中运行 Postgres 工作负载,可以实现向典型 DevOps 组织的转型。
EDB 是第一家成为Kubernetes认证服务提供商(KCSP)的 Postgres 公司,也作为创始赞助商直接参与了Data on Kubernetes(DoK)社区,以拓展云原生环境中数据工作负载的边界。这不是巧合。
CloudNativePG 最初是在 2019 年 8 月构思的。当时,2ndQuadrant 首席执行官 Simon Riggs(现在在 EDB)要求我领导公司的 Cloud Native/Kubernetes 计划。我的团队在 DevOps 实践方面有长时间的经验。我们关注 Kubernetes 已经有一段时间了。我还记得来自 Zalando 的朋友第一次向我们展示了 Postgres 如何在他们的 Kubernetes 生产环境中运行。那是个令人豁然开朗的时刻!
对我们看来,Kubernetes 1.14(2019 年 4 月)引入本地持久化卷改变了游戏规则,同时为业界带来了更为一致和标准的操作符模式应用方法。我们开始进入探索阶段,以快速失败为原则,在 3 个领域同时进行:获得 KCSP 的地位、操作符原型设计以及在裸机 Kubernetes 上对无共享数据库架构做基准测试。我们对操作符的要求是依赖于轻量级镜像(不可变应用程序容器),完全声明式的,并与 Kubernetes API 服务器紧密集成(这也意味着避免使用外部工具进行故障转移,如我们的 repmgr,或 Patroni,或 Stolon,仅举几例)。
到 2019 年 12 月,我们在各个方面都取得了远超预期的成果——最值得一提的是,裸机上的 Kubernetes 与裸机上的 Linux 性能几乎相同。如果那时失败了,那么我们可能不会做出如此信誓旦旦的承诺(参见当时的这篇博客)。
接下来,我们开始了 BDR 操作符(用于多主复制)的产品化阶段。该操作符已于 2020 年 1 月发布(今年晚些时候将再次发布)。2020 年 2 月,我们开始将该代码重构为一个新产品:Cloud Native Postgres(这是我们的“初始导入”提交)。第一次实现故障转移是又一个令人豁然开朗的时刻,证明我们的 Postgres+Kubernetes 组合在高可用性方面有着前所未有的巨大潜力。
在 2ndQuadrant 于 2020 年 9 月被 EDB 收购后,Cloud Native Postgres 得到了进一步发展,并于 2021 年 2 月发布了第一个稳定版本。此后,该产品被 EDB 和其他大型企业成功部署到生产环境中。事实上,EDB 的数据层BigAnimal就是基于 Cloud Native Postgres。
在 Cloud Native Postgres 的第一年,我们愈加意识到 Kubernetes 生产数据库工作负载采用提速了,并且越来越多的客户要求在他们的标准化基础设施中使用开源解决方案。这两个因素,再加上 EDB 的核心目标是让每个人可以在任何地方运行 Postgres,最终促使我们决定,在 2022 年第二季度将 Cloud Native Postgres 提交到 CNCF 沙盒。
4 月 21 日,我们将 Cloud Native Postgres 改名为 CloudNativePG,将历史提交次数超过 1400 的代码库开源,发布了 1.15.0 版本,并提交给 CNCF。
CloudNativePG 旨在确保每个人都可以着手在他们的所有应用中使用完全开源的 Postgres in Kubernetes 技术栈,获得他们所要求的所有自由。这种模式赋能了学生、开发者和初创企业。这是符合我们 Postgres 愿景的一项巅峰之作。
如果你所在的组织在使用 Postgres in Kubernetes 及 CloudNativePG 时需要专业协助,那么可以利用 EDB 业内领先的 Postgres 和 Kubernetes 专业知识。
EDB 为开源的 CloudNativePG 以及我们新的商业产品“EDB Postgres for Kubernetes”提供商业支持。前者遵照 Community360 故障修复订阅方案,后者基于 EDB Cloud Native Postgres 操作符,遵照标准和企业订阅方案。
EDB Postgres for Kubernetes 提供了经过认证的 OpenShift 4.6+操作符,基于 RedHat UBI 的 Postgres 镜像,对操作符的长期支持,以及需要依据企业计划使用的 EDB Postgres Advanced。
这是一个史诗般的时刻,无论是对我还是对这些年来与我共事的值得信赖的梦幻般的团队。
整整 10 年前,我的团队发布了开源项目BARMAN,用于管理 Postgres 数据库的备份和恢复。现在,我又有幸为另一个项目按下了“公开可见”的按钮。创新性的 DevOps 思维,总是把我们推到舒适区之外,不断鼓励我们拒绝内向思维,从社区和数据库部门搜取新的、更好的想法。这正是现如今了不起的 CNCF 生态系统对于我们和 Postgres 的意义。
在 2022 年 KubeCon 欧洲大会前的“Kubernetes 数据日”上,我将在EDB的展位上发表关于Postgres in Kubernetes的演讲。欢迎来和我们聊聊天,找出为项目做贡献的方法。如果你今年没有参加 Kubecon,可以在欧洲中部时间 5 月 17 日星期二下午 3:30 至 5:00 参加EDB Kubecon线上虚拟大会,观看 Postgres 如何在 Kubernetes 集群中运行,包括安装、配置和部署演示。
关于 Kubernetes 和 CNCF 的更多信息,请观看 Honeypot 项目的两集综合纪录片。如果你想了解更多关于 EDB CloudNativePG 的信息,请阅读我们的文档。
长期以来,Gabriele 一直是一名开源程序员和企业家。他拥有佛罗伦萨大学统计学学位。他通过培育精益 DevOps 文化为 2ndQuadrant 及其成员的成长做出了突出贡献。现在,他是 EDB 云原生计划的负责人。
查看英文原文:CloudNativePG: A New Open Source Kubernetes Operator for Postgres
领取专属 10元无门槛券
私享最新 技术干货