使用 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 中存储测试环境的状态。
我是 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 中存储测试环境的状态。