我使用 envtest 和本地 Minikube 集群为我的 Kubernetes 操作员编写了一个集成测试。
我正在测试的控制器正在通过 IP 地址向其中一个 pod 发出 http 请求。我得到的地址是这样的:
endpoints := &corev1.Endpoints{}
client.Get(context.TODO(), types.NamespacedName{Namespace: "ns", Name: "cluster"}, endpoints)
url = fmt.Sprintf("%s:%s", endpoints.Subsets[0].Addresses[0].IP, "8081")
如果我将操作员部署到 Kubernetes 集群,则此代码有效。
但是在运行测试时出现错误:
Post \"http://172.17.0.3:8081": dial tcp 172.17.0.3:8081: connect: no route to host
这是因为之前的 http 调用是通过操作员从 pod 进行的,但现在来自 envtest?
如何正确地为控制器编写测试?