内容提要
本文介绍了使用Kubernetes和CloudNativePG简化测试PostgreSQL补丁的流程,通过自动化创建PostgreSQL容器镜像,开发人员和审阅人员可以在Kubernetes环境中快速测试补丁,节省时间并提高可靠性。建议开发PostgreSQL 18的人使用Kubernetes和CloudNativePG测试补丁。
延伸解读
传统测试方法的痛点
文章指出,传统上测试PostgreSQL补丁需要在本地从源码编译,但这种方法在Kubernetes环境中并不适用,因为容器不可变的要求增加了安全性和复杂性。作者曾测试一个禁用ALTER SYSTEM的补丁,过程耗时且令人沮丧,因此决心改进。这反映了手动测试在效率与可靠性上的不足,而Kubernetes和CloudNativePG的自动化方案正是为了解决这些问题。
Postgres Patch Tester与自动化镜像构建
Postgres Patch Tester项目自动为Commitfest补丁生成Git分支,分支格式为commitfest/<COMMITFEST_ID><PATCH_ID>。CloudNativePG维护的postgres-trunk-containers库则通过GitHub Action,允许用户从任意公共Git仓库构建PostgreSQL容器镜像。用户只需指定Commitfest ID和补丁ID,即可在几分钟内获得镜像,并部署到Kubernetes集群中测试。这大大简化了补丁测试流程。
本地测试与端到端验证
文章介绍了使用Kind在本地创建Kubernetes集群,并部署CloudNativePG operator来测试补丁镜像。通过简单的命令即可创建3实例的PostgreSQL集群,并连接进行验证。此外,还可以运行端到端测试套件,该套件包含约200个自动化测试,覆盖备份、恢复、故障转移等关键领域,耗时近2小时。这确保了补丁在集成前达到高标准。
Q&A
如何在Kubernetes中测试PostgreSQL补丁?
可以通过使用Kubernetes和CloudNativePG,自动创建PostgreSQL容器镜像来测试补丁,节省时间并提高可靠性。
Postgres Patch Tester项目的作用是什么?
Postgres Patch Tester项目可以自动生成补丁的Git分支,方便开发者和审阅人员进行补丁测试。
使用CloudNativePG测试补丁的优势是什么?
使用CloudNativePG可以提高测试效率和补丁的可靠性,确保补丁在集成前达到高标准。
如何在本地环境中创建Kubernetes集群?
可以使用Kind(Kubernetes in Docker)在本地环境中创建Kubernetes集群,方便进行补丁测试。
如何构建PostgreSQL容器镜像?
通过在GitHub上fork相关仓库并运行指定的工作流,可以快速构建PostgreSQL容器镜像。
测试PostgreSQL补丁时会进行哪些自动化测试?
每个补丁将通过约200个自动化测试,覆盖备份、恢复、故障转移等关键领域。