首页 > 解决方案 > 使用 envTest 进行 kubernetes Operator-sdk 测试

问题描述

我是新手operator-sdk。现在我正在为带有envtest框架的操作员编写测试,所以我有一个用于环境的假控制平面。

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

上述所有行为都发生在真正的 k8s 集群中。我的问题是,在环境下envtest,控制器是否真的为部署 Pod 下拉图像?

标签: kubernetesoperator-sdkginkgo

解决方案


这取决于envtest配置。以下是kubebuilder 书中的引述:

[envtest] 设置并启动 etcd 实例和 Kubernetes API 服务器,无需 kubelet、controller-manager 或其他组件

除非您使用的是现有集群,否则请记住,测试上下文中没有运行任何内置控制器

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


推荐阅读