-1

我使用 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?

如何正确地为控制器编写测试?

4

1 回答 1

0

我的解决方法:

我使用示例将端口转发到目标 pod。

为了使代码转到localhost我会稍微修补一下。

于 2021-01-20T08:41:58.760 回答