CloudNativePG项目端到端测试环境搭建与使用指南

CloudNativePG项目端到端测试环境搭建与使用指南

cloudnative-pg CloudNativePG is a Kubernetes operator that covers the full lifecycle of a PostgreSQL database cluster with a primary/standby architecture, using native streaming replication cloudnative-pg 项目地址: https://gitcode.com/gh_mirrors/cl/cloudnative-pg

前言

在现代云原生数据库管理领域,持续集成(CI)和持续测试(CT)已成为确保软件质量的关键实践。CloudNativePG作为一款专为Kubernetes设计的PostgreSQL操作器,构建了一套完善的端到端(E2E)测试框架,以确保每个提交都能在所有支持的PostgreSQL和Kubernetes版本上正常运行。

测试环境架构概述

CloudNativePG的E2E测试框架由两大核心组件构成:

  1. 本地Kubernetes测试集群:基于kind工具构建的临时性Kubernetes集群
  2. E2E测试套件:可在任何Kubernetes集群上运行的测试集合

本地测试集群搭建

准备工作

在开始前,请确保已完成开发环境的基础配置,包括:

  • 安装并配置Docker
  • 安装kubectl命令行工具
  • 安装kind(Kubernetes in Docker)工具

集群管理脚本

项目提供了hack/setup-cluster.sh脚本用于管理本地测试集群:

# 创建新集群
hack/setup-cluster.sh create

# 构建并加载操作器镜像
hack/setup-cluster.sh load

# 部署操作器
hack/setup-cluster.sh deploy

# 销毁集群
hack/setup-cluster.sh destroy

关键参数说明

| 参数 | 描述 | 环境变量 | |------|------|---------| | -k/--k8s-version | 指定Kubernetes版本(如v1.30.0) | K8S_VERSION | | -n/--nodes | 设置集群节点数量(默认3) | NODES |

ARM64架构注意事项:在Apple M系列芯片上,脚本会自动检测架构并使用对应的镜像。如需强制使用x86/amd64模拟,需设置DOCKER_DEFAULT_PLATFORM=linux/amd64环境变量。

性能分析工具集成

测试环境内置了两款强大的性能分析工具:

  1. pprof:Go语言性能分析工具,默认端口6060
  2. pyroscope:持续性能分析平台,默认端口4040

启用命令:

hack/setup-cluster.sh pyroscope

使用pyroscope的步骤:

  1. 端口转发:kubectl port-forward -n cnpg-system svc/pyroscope 4040
  2. 浏览器访问localhost:4040查看性能数据

E2E测试套件详解

基础测试执行

E2E测试通过hack/e2e/run-e2e.sh脚本运行,关键环境变量包括:

  • CONTROLLER_IMG:K8s上部署的控制器镜像
  • POSTGRES_IMG:集群默认使用的PostgreSQL镜像
  • TEST_DEPTH:测试深度级别(0-4,默认2)
  • FEATURE_TYPE:按功能标签筛选测试用例

测试特性分类

CloudNativePG的E2E测试按功能划分为多个类别,包括但不限于:

  • 基础功能(smoke, basic)
  • 服务连通性(service-connectivity)
  • 备份恢复(backup-restore)
  • 安全特性(security)
  • 主版本升级(postgres-major-upgrade)

示例:仅运行smoke和basic测试

export FEATURE_TYPE=smoke,basic

测试执行封装脚本

项目提供了两个封装脚本简化测试流程:

  1. run-e2e-kind.sh:自动创建kind集群并运行测试

    make e2e-test-kind
    
  2. run-e2e-local.sh:在现有本地集群上运行测试

    make e2e-test-local
    

高级配置选项

  • PRESERVE_CLUSTER:测试后保留集群(默认false)
  • K8S_VERSION:指定Kubernetes版本(默认v1.30.0)
  • LOG_DIR:日志输出目录(默认_logs/)

存储卷快照测试支持

为在kind集群中测试Kubernetes卷快照功能,测试环境会自动安装:

  • csi-hostpath-sc存储类
  • csi-hostpath-snapclass卷快照类

测试最佳实践

  1. 分层测试:根据开发阶段选择合适的TEST_DEPTH级别
  2. 特性聚焦:使用FEATURE_TYPE精准测试特定功能模块
  3. 性能分析:充分利用pyroscope进行运行时性能监控
  4. 跨版本验证:通过K8S_VERSION参数验证多版本兼容性

结语

CloudNativePG的E2E测试框架为开发者提供了全面、灵活的质量保障手段。通过本文介绍的工具和方法,开发者可以在本地环境中高效验证操作器的各项功能,确保变更不会影响现有功能的稳定性。这套测试体系不仅覆盖了基础功能验证,还包括了性能分析、跨版本兼容性测试等高级场景,为CloudNativePG的可靠性提供了坚实保障。

cloudnative-pg CloudNativePG is a Kubernetes operator that covers the full lifecycle of a PostgreSQL database cluster with a primary/standby architecture, using native streaming replication cloudnative-pg 项目地址: https://gitcode.com/gh_mirrors/cl/cloudnative-pg

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓬玮剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值