使用 envTest 进行 kubernetes Operator-sdk 测试

kubernetes Operator-sdk test with envTest

我是 operator-sdk 的新手。现在我正在使用 envtest 框架为运算符编写测试,所以我有一个假的环境控制平面。

在控制器协调循环中,一旦我初始化了一个 CR,控制器就会为 pod 拉下一个镜像并部署那个 Pod。

以上所有行为都发生在真实的k8s集群中。我的问题是,在 envtest environemnts 下,控制器是否真的下拉图像以部署 Pods?

这取决于 envtest 配置。这是引自 kubebuilder book:

[envtest] setting up and starting an instance of etcd and the Kubernetes API server, without kubelet, controller-manager or other components

Unless you’re using an existing cluster, keep in mind that no built-in controllers are running in the test context

因此,如果您不将 USE_EXISTING_CLUSTER env var 设置为 true,envtest 将设置仅包含 API 服务器和 etcd 的控制平面。例如,如果您的控制器应该在某个事件中创建 Deployment,则测试环境中没有部署控制器会创建 ReplicaSet 和 Pods。基本上,它所做的只是在 etcd 中存储测试环境的状态。