Acto: Kubernetes Operators 和 Controllers 的端到端测试工具
acto Push-Button End-to-End Testing of Kubernetes Operators/Controllers 项目地址: https://gitcode.com/gh_mirrors/ac/acto
项目介绍
Acto 是一个完全自动化的端到端测试工具,专门用于 Kubernetes Operators 和 Controllers。Acto 采用状态中心的方法来测试目标 Operator 及其管理的系统。它持续指示 Operator 将系统协调到不同的状态,并检查系统是否达到这些期望状态。Acto 将操作建模为状态转换,并系统地实现状态转换序列,以在不同场景中执行支持的操作。Acto 的自动化或检查器检查系统的状态是否符合预期。Acto 是完全自动化的,只需要 Operator 的部署脚本作为输入。测试在本地 Kubernetes 环境中进行,支持 Kind、Minikube 和 K3d 等后端。
项目快速启动
前提条件
在开始使用 Acto 之前,请确保您的系统满足以下要求:
- Docker
- Golang
- Kubernetes Kind 集群
- Python >= 3.10 及依赖项
- kubectl(可选)
- Helm(可选)
安装依赖
首先,安装 Python 依赖项:
python3 -m pip install -r requirements.txt
如果您在开发环境中使用 Acto,还需要安装开发依赖项:
python3 -m pip install -r requirements-dev.txt
构建 Acto
运行以下命令来构建 Acto 的共享对象:
make
运行示例测试
要运行一个示例测试,请执行以下命令:
python3 -m acto.reproduce --reproduce-dir test/e2e_tests/test_data/cassop-330/trial-demo --config data/cass-operator/config.json
此命令将使用 Kind 启动一个本地 Kubernetes 集群,并部署 cass-operator。Acto 将自动生成 CR 序列来触发一个已知的 bug,并检测系统中的不一致性。
应用案例和最佳实践
应用案例
Acto 已被应用于 11 个流行的 Kubernetes Operator,发现了 50 多个新 bug(其中许多已被确认,28 个已修复)。Acto 的自动化测试能力显著提高了 Kubernetes Operator 的可靠性。
最佳实践
- 自动化测试:使用 Acto 进行自动化端到端测试,确保 Operator 在不同状态下的行为符合预期。
- 持续集成:将 Acto 集成到 CI/CD 管道中,每次代码提交后自动运行测试,确保代码质量。
- Bug 修复:利用 Acto 发现的 bug 报告,快速定位并修复 Operator 中的问题。
典型生态项目
Kubernetes Operators
- Prometheus Operator:用于管理 Prometheus 监控系统的 Operator。
- Elasticsearch Operator:用于管理 Elasticsearch 集群的 Operator。
- Cassandra Operator:用于管理 Cassandra 数据库集群的 Operator。
Kubernetes Controllers
- Kubebuilder:用于构建 Kubernetes Controllers 的框架。
- Operator SDK:用于构建 Kubernetes Operators 的 SDK。
通过 Acto 的自动化测试,这些生态项目可以显著提高其稳定性和可靠性,确保在生产环境中的高效运行。
acto Push-Button End-to-End Testing of Kubernetes Operators/Controllers 项目地址: https://gitcode.com/gh_mirrors/ac/acto
版权归原作者 柳旖岭 所有, 如有侵权,请联系我们删除。