【问题标题】:How to mock the Kubernetes cluster/server?如何模拟 Kubernetes 集群/服务器?
【发布时间】:2020-02-13 09:13:54
【问题描述】:

Kubernetes OpenAPI 规范托管在这里。

https://github.com/kubernetes/kubernetes/tree/master/api/openapi-spec

此外,这里还提供了 Kubernetes 的各种客户端 API:

https://kubernetes.io/docs/reference/using-api/client-libraries/

使用 OpenAPI 规范,我能够生成提供 REST 服务的服务器代码。但是,使用这些 K8s 客户端 API(以 Go、Java 等任何一种语言编写)的应用程序并不直接使用这些 REST API。

我的目标是模拟 K8s 服务器以用于测试自动化并构建一个受控环境来创建各种测试场景。

是否有任何现成的 Kubernetes mock 可用?如果没有,我们如何将客户端 API 与上述 OpenAPI 生成的 REST 服务器连接起来?这样,应用程序将继续使用客户端 API,但在内部,它们将与模拟的 K8s 服务器而不是真实的服务器进行通信。

请帮助选择选项。

.

【问题讨论】:

  • 您是否考虑过使用Microk8s 或Prism stoplight.io/open-source/prism
  • Prism 是一个 HTTP 模拟服务器,我也使用过 WireMock。我的问题不是模拟 K8s REST API,而是如何将 K8s 客户端 API 连接到这个模拟 REST API 以构建可配置和受控的 K8s 集群,用于测试 K8s 应用程序。

标签: kubernetes mocking


【解决方案1】:

不是真正直接回答您的问题,但我见过的大多数解决方案都不是试图模拟 k8s API,而是通过 k3s(来自 Rancher 实验室)或 KinD 项目(官方方式)真正使用它

然后你像普通的 kubernetes 集群一样连接到它

【讨论】:

  • 实际上 KinD 也是 kubernetes 项目本身启动端到端测试的方式
  • 问题不在于使用真正的 K8s 或其变体。挑战在于如何让真实的人表现得不好,即做一些 -ve 测试。模拟 API 是一种方法。
猜你喜欢
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多