我是新手operator-sdk
。现在我正在为带有envtest
框架的操作员编写测试,所以我有一个用于环境的假控制平面。
在控制器协调循环中,一旦我初始化了一个 CR,控制器就会为 pod 拉下一个镜像并部署该 Pod。
上述所有行为都发生在真正的 k8s 集群中。我的问题是,在环境下envtest
,控制器是否真的为部署 Pod 下拉图像?
我是新手operator-sdk
。现在我正在为带有envtest
框架的操作员编写测试,所以我有一个用于环境的假控制平面。
在控制器协调循环中,一旦我初始化了一个 CR,控制器就会为 pod 拉下一个镜像并部署该 Pod。
上述所有行为都发生在真正的 k8s 集群中。我的问题是,在环境下envtest
,控制器是否真的为部署 Pod 下拉图像?
这取决于envtest
配置。以下是kubebuilder 书中的引述:
[envtest] 设置并启动 etcd 实例和 Kubernetes API 服务器,无需 kubelet、controller-manager 或其他组件
除非您使用的是现有集群,否则请记住,测试上下文中没有运行任何内置控制器
因此,如果您不将USE_EXISTING_CLUSTER
env var 设置为 true,envtest
则将仅使用 API 服务器和 etcd 设置控制平面。例如,如果您的控制器应该在某些事件中创建 Deployment,那么在测试环境中没有会创建 ReplicaSet 和 Pod 的部署控制器。基本上,它所做的只是将测试环境的状态存储在 etcd 中。