Kubernetes 的集成测试
# 摘要
# 问题、提示
- Kubernetes 的集成测试怎么做的?
- 如何让自己的应用在 Kubernetes 中进行集成测试? #query
# 主要笔记
- 模块依赖:最依赖的两个模块分别是 ETCD 和 APIServer
- ETCD:Kubernetes 集成测试需要安装 etcd(只要安装即可,不需要启动),测试的时候通过 Golang 调用 Command 执行二进制程序的方式启动。
- APIServer 是集成测试中必要且复杂的模块,StartTestServer 函数初始化了一些本地测试需要的配置,然后通过 / cmd / kube-apiserver / app / server.go 目录的 app.CreateKubeAPIServer 创建了一个本地测试服务器,这样也就启动了一个集成测试环境啦。
- 项目结构组织:
/
test /
integration / 在这个目录下存放集成测试的代码,以测试的对象分类(如 Deployment, ConfigMap,Client),用于复用的测试框架在文件夹
framework 内,如
ETCD 和
APIServer 的启动都是该框架的函数调用。
- 这样的集成测试框架很有用,比如开发 Kubernetes 的 Operator 的时候,
controller-runtime
提供envtest
( godoc) 帮助设置并启动的 controllers 实例来写集成测试,不需要 kubelet,controller-manager 或者其他组件。
- 这样的集成测试框架很有用,比如开发 Kubernetes 的 Operator 的时候,
- 触发方式:通过
makefile
的脚本触发,具体执行操作在: / hack / make-rules / test-integration.sh - etcd 的集成测试